Use this skill with your AI agent
Paste this skill into your AI agent's context, or save the file to your project. Works with any AI agent that reads markdown.
| 1 | --- |
| 2 | name: fr-freelance-intake |
| 3 | description: ALWAYS USE THIS SKILL when a user asks for help preparing their French tax returns AND mentions freelancing, auto-entrepreneur, micro-entrepreneur, entreprise individuelle, profession libérale, or self-employment. Trigger on phrases like "aide-moi avec mes impôts", "préparer ma déclaration", "I'm a freelancer in France", "I'm an auto-entrepreneur", "prepare my 2042-C-PRO", or any similar phrasing where the user is a France-resident self-employed individual needing tax return preparation. This is the REQUIRED entry point for the French self-employed tax workflow -- every other skill in the stack (france-tva, france-income-tax, france-cotisations, fr-return-assembly) depends on this skill running first to produce a structured intake package. Uses upload-first workflow -- the user dumps all their documents and the skill infers as much as possible before asking questions. Uses ask_user_input_v0 for structured questions instead of one-at-a-time prose. Built for speed. France full-year residents only; self-employed individuals, micro-entrepreneurs, and sole proprietors. |
| 4 | version: 1.0 |
| 5 | jurisdiction: FR |
| 6 | category: orchestrator |
| 7 | --- |
| 8 | |
| 9 | # France Self-Employed Intake Skill v1.0 |
| 10 | |
| 11 | ## What this file is |
| 12 | |
| 13 | The intake orchestrator for France-resident self-employed individuals. Every downstream French content skill (france-tva, france-income-tax, france-cotisations, fr-estimated-tax) and the assembly orchestrator (fr-return-assembly) depend on this skill running first to produce a structured intake package. |
| 14 | |
| 15 | This skill does not compute any tax figures. Its job is to collect all the facts, parse all the documents, confirm everything with the user, and hand off a clean intake package to `fr-return-assembly`. |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## Design principles |
| 20 | |
| 21 | v1.0 follows the upload-first, inference-then-confirm pattern: |
| 22 | |
| 23 | 1. **Compact refusal sweep** using `ask_user_input_v0` -- 3 interactive questions, ~30 seconds. |
| 24 | 2. **Upload-first workflow** -- after the refusal check, the user dumps everything they have. |
| 25 | 3. **Inference pass** -- Claude parses every document and extracts as much as possible. |
| 26 | 4. **Gap-filling only** -- Claude asks the user ONLY about what is missing, ambiguous, or needs confirmation. |
| 27 | 5. **Single confirmation pass** at the end -- show the full picture, let the user correct anything wrong, hand off to downstream skills. |
| 28 | |
| 29 | Target: intake completes in 5 minutes for a prepared user, 15 minutes for a user who has to go fetch documents. |
| 30 | |
| 31 | ## Critical operating principles |
| 32 | |
| 33 | **Do not narrate the workflow.** Do not say "Phase 1," "Phase 2," "Now I'll ask you about deductions." Just do the work. |
| 34 | |
| 35 | **Do not ask questions that have already been answered.** If the refusal check established the user is a micro-entrepreneur, do not later ask about business structure. Track what is known. |
| 36 | |
| 37 | **Do not ask about things visible in uploaded documents.** If the bank statement shows quarterly URSSAF payments, do not ask "did you pay cotisations." Confirm what you see, do not re-ask. |
| 38 | |
| 39 | **Use `ask_user_input_v0` for any multiple-choice question.** Text input is only for genuinely open-ended data (names, addresses, specific amounts when they cannot be inferred). |
| 40 | |
| 41 | **Prefer batching.** Ask 3 related questions in a single message when they do not depend on each other's answers. |
| 42 | |
| 43 | **Be terse but complete.** No hedging, no "let me know if you have questions," no "I hope this helps." |
| 44 | |
| 45 | **Exception for blocking decisions.** If a single question determines whether the user is in-scope or out-of-scope, ask it standalone. |
| 46 | |
| 47 | --- |
| 48 | |
| 49 | ## Section 1 -- The opening |
| 50 | |
| 51 | When triggered, respond with ONE message that: |
| 52 | |
| 53 | 1. One-line greeting (no paragraph of expectation-setting) |
| 54 | 2. One-line summary of the flow (scope check -> upload -> gaps -> handoff to return assembly) |
| 55 | 3. One-line reviewer reminder (must be reviewed by expert-comptable before filing) |
| 56 | 4. Launch the refusal sweep immediately using `ask_user_input_v0` |
| 57 | |
| 58 | **Example first message:** |
| 59 | |
| 60 | > Let's get your 2025 French returns ready. Quick scope check, then you upload your documents, then I fill in the gaps. Target time: 10 minutes. |
| 61 | > |
| 62 | > Reminder: everything I produce needs to be reviewed and signed off by an expert-comptable or qualified tax professional before you file anything with the DGFiP or URSSAF. I'm not a substitute for review. |
| 63 | > |
| 64 | > Scope check: |
| 65 | |
| 66 | Then immediately call `ask_user_input_v0` with the refusal questions. |
| 67 | |
| 68 | **Do NOT:** |
| 69 | - Write a welcome paragraph |
| 70 | - Explain the phases |
| 71 | - Ask "are you ready to start" |
| 72 | - List what documents you will eventually need |
| 73 | - Give a disclaimer beyond the one reviewer line |
| 74 | |
| 75 | --- |
| 76 | |
| 77 | ## Section 2 -- Refusal sweep (compact) |
| 78 | |
| 79 | Present the refusal sweep as a single `ask_user_input_v0` call with 3 questions, all single-select. |
| 80 | |
| 81 | **The 3 questions to ask first:** |
| 82 | |
| 83 | ``` |
| 84 | Q1: "Business type?" |
| 85 | Options: ["Micro-entrepreneur (auto-entrepreneur)", "Entreprise individuelle (EI) au réel", "EURL (gérant associé unique)", "SASU (président associé unique)", "Profession libérale", "Not sure"] |
| 86 | |
| 87 | Q2: "Revenue range for 2025?" |
| 88 | Options: ["Under €77,700 (services) / €188,700 (goods)", "Above €77,700 (services) / €188,700 (goods)", "Not sure"] |
| 89 | |
| 90 | Q3: "TVA regime?" |
| 91 | Options: ["Franchise en base (no TVA charged)", "Réel simplifié (CA12 annual + 2 acomptes)", "Réel normal (CA3 monthly/quarterly)", "Not sure"] |
| 92 | ``` |
| 93 | |
| 94 | **After the response, evaluate:** |
| 95 | |
| 96 | - **Q1 = Micro-entrepreneur** -> continue. Micro-fiscal and micro-social regime. Forms: 2042, 2042-C-PRO (cases 5KO/5KP for BIC or 5HQ/5HB for BNC). |
| 97 | - **Q1 = EI au réel** -> continue. Full accounting regime. Forms: 2042, 2042-C-PRO, plus liasse fiscale (2035 for BNC, 2031 for BIC). |
| 98 | - **Q1 = EURL (gérant associé unique)** -> continue ONLY if gérant associé unique with IR option (impôt sur le revenu). If EURL at IS (impôt sur les sociétés), stop: "EURL at IS files a corporate return (liasse 2065). I'm set up for personal income tax filings. You need an expert-comptable who handles IS returns." |
| 99 | - **Q1 = SASU** -> stop. "SASU is always subject to impôt sur les sociétés (IS). The président is an assimilé salarié with bulletins de paie. I'm set up for self-employed individuals filing personal income tax. You need an expert-comptable who handles corporate and payroll." |
| 100 | - **Q1 = Profession libérale** -> continue. BNC regime. Forms: 2042, 2042-C-PRO, 2035 (déclaration contrôlée). |
| 101 | - **Q1 = Not sure** -> ask one follow-up: "Did you register with the guichet unique (formalités.entreprises.gouv.fr) as auto-entrepreneur, or do you have a SIRET with a full accounting obligation? Check your avis de situation SIRENE or your URSSAF online account for your status." |
| 102 | |
| 103 | - **Q2 = Under thresholds** -> continue. Micro-entrepreneur regime is available. |
| 104 | - **Q2 = Above thresholds** -> continue with a flag: if currently micro-entrepreneur, mandatory switch to réel for the second consecutive year above thresholds (Article 293 B and Article 50-0 CGI). Will verify after inference. |
| 105 | - **Q2 = Not sure** -> continue, infer from documents. |
| 106 | |
| 107 | - **Q3 = Franchise en base** -> continue. No TVA charged or recovered. Threshold: €36,800 services / €91,900 goods (basic franchise), with tolerance up to €39,100 / €101,000 (Article 293 B CGI). |
| 108 | - **Q3 = Réel simplifié** -> continue. Annual CA12 with two acomptes semestriels (July and December). Input TVA recovery available. |
| 109 | - **Q3 = Réel normal** -> continue. Monthly CA3 (or quarterly if TVA < €4,000/year). |
| 110 | - **Q3 = Not sure** -> ask one follow-up: "Do your invoices include TVA (5.5%, 10%, or 20%)? If they say 'TVA non applicable, article 293 B du CGI', you're in franchise en base. If you charge TVA and file monthly/quarterly, you're réel normal. If you file one annual TVA return with two advance payments, you're réel simplifié." |
| 111 | |
| 112 | **After Q1-Q3 pass, ask the second batch of scope questions (also batched):** |
| 113 | |
| 114 | ``` |
| 115 | Q4: "URSSAF registration status?" |
| 116 | Options: ["Registered and paying cotisations", "Recently registered (< 12 months)", "Not registered / pending", "CIPAV-affiliated (profession libérale réglementée)"] |
| 117 | |
| 118 | Q5: "Marital status and household?" |
| 119 | Options: ["Single (1 part)", "Married / PACSé - déclaration commune", "Married / PACSé - déclaration séparée (year of marriage/PACS)", "Single parent (parent isolé, case T/L)"] |
| 120 | |
| 121 | Q6: "Other income sources in 2025?" |
| 122 | Options: ["None -- self-employment only", "Employment income (salaires)", "Rental income (revenus fonciers)", "Investment income (dividends, interest, capital gains)", "Multiple of the above"] |
| 123 | |
| 124 | Q7: "Prior year filing status?" |
| 125 | Options: ["Filed 2024 return on time", "Filed 2024 return late", "First year filing", "Did not file 2024"] |
| 126 | |
| 127 | Q8: "Régime matrimonial (if married/PACSé)?" |
| 128 | Options: ["Communauté réduite aux acquêts (default)", "Communauté universelle", "Séparation de biens", "Not married / Not applicable"] |
| 129 | ``` |
| 130 | |
| 131 | **Evaluate Q4:** |
| 132 | - **Registered and paying** -> continue. Standard micro-social or cotisations au réel. |
| 133 | - **Recently registered** -> continue with flag: ACRE (Aide à la Création ou à la Reprise d'Entreprise) may apply for first 3 years. Reduced cotisations rates: ~50% reduction year 1 for micro-entrepreneurs. |
| 134 | - **Not registered / pending** -> continue with flag: registration required. Will note in action items. |
| 135 | - **CIPAV-affiliated** -> continue with flag: CIPAV handles retirement for certain professions libérales réglementées (architectes, ingénieurs-conseils, etc.). Different cotisation structure. |
| 136 | |
| 137 | **Evaluate Q5:** |
| 138 | - All options -> note for quotient familial calculation. Parts fiscales: 1 (single), 2 (married/PACSé joint), special allocation for children and parent isolé. |
| 139 | |
| 140 | **Evaluate Q6:** |
| 141 | - All options -> note for multi-schedule return. Employment income goes to 2042 traitements et salaires. Rental to 2044 or micro-foncier. Investment to 2042 revenus de capitaux mobiliers or prélèvement forfaitaire unique (PFU 30%). |
| 142 | |
| 143 | **Evaluate Q7:** |
| 144 | - All options -> note for penalty/interest risk and prior year reference amounts. |
| 145 | |
| 146 | **Evaluate Q8:** |
| 147 | - Affects whether business assets are common property. Communauté regimes may expose the non-business spouse's share to business debts. |
| 148 | |
| 149 | **Total time:** ~60 seconds if the user taps through. |
| 150 | |
| 151 | --- |
| 152 | |
| 153 | ## Section 3 -- The dump |
| 154 | |
| 155 | Once the refusal sweep passes, immediately ask for the document dump. Single message. No preamble. |
| 156 | |
| 157 | **Example:** |
| 158 | |
| 159 | > Scope is good. Now upload everything you have for 2025 -- drop it all in at once: |
| 160 | > |
| 161 | > - Business bank account statements for all of 2025 (CSV or PDF) |
| 162 | > - Sales invoices issued in 2025 (or accounting software export) |
| 163 | > - Purchase invoices / receipts for business expenses |
| 164 | > - Prior year tax return (avis d'imposition 2024 sur revenus 2024, or 2042/2042-C-PRO) |
| 165 | > - Prior TVA returns for 2025 (CA3 or CA12) |
| 166 | > - URSSAF attestation or cotisation statements |
| 167 | > - Déclaration sociale des indépendants (DSI) if applicable |
| 168 | > - URSSAF micro-entrepreneur quarterly/monthly declarations |
| 169 | > - CFE (Cotisation Foncière des Entreprises) avis d'imposition |
| 170 | > - Any DGFiP or URSSAF correspondence |
| 171 | > - Capital asset purchase receipts (computers, equipment, vehicles) |
| 172 | > - Anything else tax-related you have |
| 173 | > |
| 174 | > Don't worry about labeling or organizing -- I'll figure out what each file is. Drag and drop when ready. |
| 175 | |
| 176 | Then wait. Do not ask any other questions while waiting. |
| 177 | |
| 178 | **If the user uploads a partial dump and says "that's what I have":** move to inference. Do not demand more. Request specific missing items during gap-filling. |
| 179 | |
| 180 | **If the user says "I don't know what I have":** Switch to guided mode: |
| 181 | > Check these places: |
| 182 | > - Business bank: download 2025 statements as PDF or CSV |
| 183 | > - impots.gouv.fr: download prior year avis d'imposition and déclarations |
| 184 | > - autoentrepreneur.urssaf.fr (if micro): download annual attestation and declaration history |
| 185 | > - Email: search for "facture", "TVA", "URSSAF", "impôts", "CFE" |
| 186 | > - Your expert-comptable from last year, if you had one |
| 187 | > - Accounting software (Pennylane, Indy, Tiime, FreeBe, etc.): export grand livre or FEC |
| 188 | > |
| 189 | > Come back when you have something to upload. I'll work with whatever you bring. |
| 190 | |
| 191 | --- |
| 192 | |
| 193 | ## Section 4 -- The inference pass |
| 194 | |
| 195 | When documents arrive, parse each one. For each document, extract: |
| 196 | |
| 197 | **Bank statement:** |
| 198 | - Total deposits (candidate chiffre d'affaires / recettes) |
| 199 | - Recurring inflows (client payments with names) |
| 200 | - Outflows to URSSAF (cotisations sociales with dates and amounts) |
| 201 | - Outflows to DGFiP / Trésor Public (income tax payments, acomptes) |
| 202 | - Outflows to DGFiP TVA account (TVA payments) |
| 203 | - Outflows to suppliers (business expenses by category) |
| 204 | - CFE payment (usually October/November direct debit or December 15 deadline) |
| 205 | - Equipment purchases (potential immobilisations) |
| 206 | - Transfers to personal account (prélèvements de l'exploitant) |
| 207 | - SaaS / software subscriptions |
| 208 | - Professional memberships (ordre professionnel, syndicat) |
| 209 | - Insurance payments (RC Pro, prévoyance, Madelin) |
| 210 | - Cotisation foncière des entreprises (CFE) |
| 211 | |
| 212 | **Sales invoices:** |
| 213 | - Client names and amounts HT (hors taxes) and TTC (toutes taxes comprises) |
| 214 | - Whether TVA was charged (and at what rate: 20%, 10%, 5.5%) |
| 215 | - Whether invoices contain "TVA non applicable, article 293 B du CGI" (franchise en base indicator) |
| 216 | - Total chiffre d'affaires reconciliation against bank deposits |
| 217 | - Any foreign clients (EU or non-EU -- autoliquidation implications) |
| 218 | - Any invoices with retenue à la source (withholding) |
| 219 | |
| 220 | **Purchase invoices / receipts:** |
| 221 | - Expense category (charges courantes, immobilisations, achats de marchandises) |
| 222 | - TVA amount on each (récupérable for réel, cost for franchise/micro) |
| 223 | - Supplier location (France, EU, non-EU) |
| 224 | - Any items qualifying as immobilisations (typically > €500 HT) |
| 225 | - Any blocked categories (dépenses somptuaires: chasse, pêche, résidences de plaisance per Article 39-4 CGI) |
| 226 | |
| 227 | **Prior year tax return (avis d'imposition / 2042):** |
| 228 | - Prior year revenu fiscal de référence (RFR) |
| 229 | - Prior year impôt net |
| 230 | - Nombre de parts fiscales |
| 231 | - Prior year BIC/BNC amounts declared |
| 232 | - Any déficits reportables (carryforward losses) |
| 233 | - Prélèvement à la source (PAS) rate applied |
| 234 | - Prior year acomptes contemporains |
| 235 | |
| 236 | **Prior TVA returns (CA3/CA12):** |
| 237 | - Periodic turnover and TVA collected (TVA collectée) |
| 238 | - Input TVA claimed (TVA déductible) |
| 239 | - Any crédit de TVA carried forward |
| 240 | - CA3 monthly/quarterly box structure |
| 241 | - CA12 annual summary with acomptes paid |
| 242 | |
| 243 | **URSSAF statements / micro-entrepreneur declarations:** |
| 244 | - Quarterly or monthly chiffre d'affaires declared to URSSAF |
| 245 | - Cotisations sociales paid (and rate applied) |
| 246 | - ACRE benefit if applicable (50% reduction) |
| 247 | - Versement libératoire de l'impôt sur le revenu if opted in (1.0% BIC vente, 1.7% BIC services, 2.2% BNC) |
| 248 | - Any régularisation (adjustment) from prior years |
| 249 | |
| 250 | **CFE avis:** |
| 251 | - Amount of CFE paid for 2025 |
| 252 | - Commune and base d'imposition |
| 253 | |
| 254 | **After parsing everything, build an internal inference object.** Do not show the raw inference yet -- transform it into a compact summary for the user in Section 5. |
| 255 | |
| 256 | --- |
| 257 | |
| 258 | ## Section 5 -- The confirmation |
| 259 | |
| 260 | After inference, present a single compact summary message. Use a structured format that is fast to scan. Invite the user to correct anything wrong. |
| 261 | |
| 262 | **Example summary message:** |
| 263 | |
| 264 | > Here's what I pulled from your documents. Skim and tell me what's wrong. |
| 265 | > |
| 266 | > **Identity** |
| 267 | > - Marie Dupont, married (déclaration commune), 2 parts + 1 demi-part (1 child) |
| 268 | > - Full-year France resident (Lyon) |
| 269 | > - Micro-entrepreneur, SIRET: 123 456 789 00010 |
| 270 | > - Activité: conseil en informatique (BNC) |
| 271 | > - TVA: franchise en base (article 293 B) |
| 272 | > |
| 273 | > **Income (from bank statement + invoices)** |
| 274 | > - Chiffre d'affaires (recettes encaissées): €58,000 |
| 275 | > - Client A SARL: €30,000 (monthly retainer) |
| 276 | > - Client B GmbH (Germany): €18,000 (project, EU service) |
| 277 | > - Various smaller clients: €10,000 |
| 278 | > - No TVA collected (franchise en base) |
| 279 | > |
| 280 | > **Micro-entrepreneur declarations (from URSSAF)** |
| 281 | > - Q1: €14,000 declared, cotisations paid: €3,094 (22.1%) |
| 282 | > - Q2: €15,500 declared, cotisations paid: €3,426 |
| 283 | > - Q3: €14,500 declared, cotisations paid: €3,205 |
| 284 | > - Q4: €14,000 declared, cotisations paid: €3,094 |
| 285 | > - Total declared: €58,000 -- matches bank deposits |
| 286 | > - Total cotisations: €12,819 |
| 287 | > - Versement libératoire IR: opted in (2.2% BNC = €1,276) |
| 288 | > |
| 289 | > **CFE** |
| 290 | > - CFE 2025: €412 (Lyon) |
| 291 | > |
| 292 | > **Prior year (from 2024 avis d'imposition)** |
| 293 | > - 2024 RFR: €42,000 |
| 294 | > - 2024 impôt net: €3,200 |
| 295 | > - Parts: 2.5 |
| 296 | > - PAS rate: 7.5% |
| 297 | > |
| 298 | > **Spouse income** |
| 299 | > - Not yet captured -- will ask in gap-filling if déclaration commune |
| 300 | > |
| 301 | > **Flags I already see:** |
| 302 | > 1. EU client (Germany) -- services to EU business: autoliquidation by client, but need to verify DEB/DES declaration obligation (déclaration européenne de services) if > €0 in services to EU |
| 303 | > 2. CA approaching franchise en base BNC threshold (€36,800 basic / €39,100 tolérance) -- at €58,000 she should have been charging TVA. **Red flag: franchise en base not available above threshold. Needs immediate TVA registration.** |
| 304 | > 3. If versement libératoire IR was opted in, verify RFR N-2 eligibility: RFR per part must be ≤ €27,478 (2025 threshold on 2023 RFR) |
| 305 | > |
| 306 | > **Is any of this wrong? Reply "looks good" or tell me what to fix.** |
| 307 | |
| 308 | --- |
| 309 | |
| 310 | ## Section 6 -- Gap filling |
| 311 | |
| 312 | After the user confirms the summary (or corrects it), ask about things that cannot be inferred from documents. Use `ask_user_input_v0` where possible. |
| 313 | |
| 314 | **Things that usually cannot be inferred:** |
| 315 | |
| 316 | 1. **Spouse's income** -- If déclaration commune, the spouse's salary, retirement, or other income is needed for the full 2042. |
| 317 | 2. **Children and dependents** -- Number, ages, shared custody (garde alternée), for parts fiscales calculation. |
| 318 | 3. **Home office (local professionnel)** -- Whether a dedicated workspace exists, proportion of home used. |
| 319 | 4. **Frais réels vs abattement forfaitaire** -- For employment income (if applicable): keep the 10% abattement or declare actual commuting/professional expenses. |
| 320 | 5. **Réductions and crédits d'impôt** -- Dons aux associations (66% or 75%), emploi à domicile, frais de garde d'enfants, investissement locatif (Pinel, Denormandie), transition énergétique. |
| 321 | 6. **Madelin / loi Madelin contracts** -- Prévoyance, mutuelle, retraite complémentaire for TNS (travailleurs non salariés). Deductible from BNC/BIC but within ceilings. |
| 322 | 7. **Déficits antérieurs** -- Carryforward losses from prior years (not always on avis d'imposition). |
| 323 | |
| 324 | **Home office gap-filling example:** |
| 325 | |
| 326 | Call `ask_user_input_v0` with: |
| 327 | |
| 328 | ``` |
| 329 | Q: "Professional workspace?" |
| 330 | Options: [ |
| 331 | "Dedicated room at home, used ONLY for work", |
| 332 | "Shared space at home (not exclusively professional)", |
| 333 | "Separate business premises (bureau, coworking)", |
| 334 | "No fixed workspace / work at client sites" |
| 335 | ] |
| 336 | ``` |
| 337 | |
| 338 | If option 1 -> ask for the room area and total home area (for prorata calculation). Deductible share of rent/mortgage interest, electricity, internet, property tax (taxe foncière) proportional to area. |
| 339 | If option 2 -> flag as reviewer item: shared use reduces the deductible percentage. Often 10-30% accepted by the administration. |
| 340 | If option 3 -> rent is already captured in expenses. No home office calculation needed. |
| 341 | If option 4 -> skip home office entirely. |
| 342 | |
| 343 | **Children / dependents example:** |
| 344 | |
| 345 | Call `ask_user_input_v0` with: |
| 346 | |
| 347 | ``` |
| 348 | Q: "Dependents for quotient familial?" |
| 349 | Options: [ |
| 350 | "No children or dependents", |
| 351 | "1 child", |
| 352 | "2 children", |
| 353 | "3+ children (specify in follow-up)", |
| 354 | "Children in garde alternée (shared custody)" |
| 355 | ] |
| 356 | ``` |
| 357 | |
| 358 | Each child: +0.5 part for 1st and 2nd, +1 part from 3rd child onwards. Garde alternée: half the parts (0.25 / 0.25 / 0.5). |
| 359 | |
| 360 | **Tax credits example:** |
| 361 | |
| 362 | Call `ask_user_input_v0` with: |
| 363 | |
| 364 | ``` |
| 365 | Q: "Any of these apply?" |
| 366 | Options: [ |
| 367 | "Dons aux associations / organismes d'intérêt général", |
| 368 | "Emploi d'un salarié à domicile", |
| 369 | "Frais de garde d'enfants (< 6 ans)", |
| 370 | "Cotisations Madelin (prévoyance, retraite, mutuelle)", |
| 371 | "None of these" |
| 372 | ] |
| 373 | ``` |
| 374 | |
| 375 | Flag all crédits/réductions with limits for reviewer confirmation. |
| 376 | |
| 377 | --- |
| 378 | |
| 379 | ## Section 7 -- The final handoff |
| 380 | |
| 381 | Once gap-filling is done, produce a final handoff message and hand off to `fr-return-assembly`. |
| 382 | |
| 383 | **Example handoff message:** |
| 384 | |
| 385 | > Intake complete. Here's what's going to the return assembly: |
| 386 | > |
| 387 | > Micro-entrepreneur BNC, married with 1 child (2.5 parts), franchise en base TVA (but threshold exceeded -- TVA registration flag). Chiffre d'affaires €58,000, cotisations sociales €12,819, versement libératoire IR €1,276. |
| 388 | > |
| 389 | > I'm now going to run the full French return preparation. This covers: |
| 390 | > 1. TVA analysis and registration obligation assessment |
| 391 | > 2. Déclaration de revenus (2042 / 2042-C-PRO) |
| 392 | > 3. Cotisations sociales reconciliation (URSSAF) |
| 393 | > 4. CFE verification |
| 394 | > 5. Prélèvement à la source rate update for 2026 |
| 395 | > |
| 396 | > You'll get back: |
| 397 | > 1. A working paper with all forms and computations |
| 398 | > 2. A reviewer brief with positions, citations, and flags for your expert-comptable |
| 399 | > 3. A filing calendar with all upcoming deadlines |
| 400 | > |
| 401 | > Starting now. |
| 402 | |
| 403 | Then internally invoke `fr-return-assembly` with the structured intake package. |
| 404 | |
| 405 | --- |
| 406 | |
| 407 | ## Section 8 -- Structured intake package (internal format) |
| 408 | |
| 409 | The downstream skill (`fr-return-assembly`) consumes a JSON structure. It is internal and not shown to the user unless they ask. Key fields: |
| 410 | |
| 411 | ```json |
| 412 | { |
| 413 | "jurisdiction": "FR", |
| 414 | "tax_year": 2025, |
| 415 | "taxpayer": { |
| 416 | "name": "", |
| 417 | "date_of_birth": "", |
| 418 | "marital_status": "single | married_joint | married_separate | pacs_joint | pacs_separate | single_parent", |
| 419 | "parts_fiscales": 0, |
| 420 | "children": [], |
| 421 | "residency": "full_year", |
| 422 | "siret": "", |
| 423 | "activity_code_ape": "", |
| 424 | "business_type": "micro_entrepreneur | ei_reel | eurl_ir | profession_liberale", |
| 425 | "regime_fiscal": "micro_bnc | micro_bic | declaration_controlee | reel_simplifie_bic | reel_normal_bic", |
| 426 | "regime_tva": "franchise_en_base | reel_simplifie | reel_normal", |
| 427 | "urssaf_status": "registered | recently_registered | cipav", |
| 428 | "acre_eligible": false, |
| 429 | "versement_liberatoire_ir": false, |
| 430 | "regime_matrimonial": "communaute_acquets | communaute_universelle | separation_biens | na" |
| 431 | }, |
| 432 | "income": { |
| 433 | "chiffre_affaires_ht": 0, |
| 434 | "chiffre_affaires_ttc": 0, |
| 435 | "tva_collected": 0, |
| 436 | "client_breakdown": [], |
| 437 | "eu_services": 0, |
| 438 | "non_eu_services": 0, |
| 439 | "other_income": { |
| 440 | "salaires": 0, |
| 441 | "revenus_fonciers": 0, |
| 442 | "revenus_capitaux_mobiliers": 0, |
| 443 | "plus_values": 0 |
| 444 | }, |
| 445 | "spouse_income": { |
| 446 | "salaires": 0, |
| 447 | "other": 0 |
| 448 | } |
| 449 | }, |
| 450 | "expenses": { |
| 451 | "charges_courantes": [], |
| 452 | "immobilisations": [], |
| 453 | "charges_mixtes": [], |
| 454 | "blocked": [], |
| 455 | "cotisations_madelin": { |
| 456 | "prevoyance": 0, |
| 457 | "retraite": 0, |
| 458 | "mutuelle": 0 |
| 459 | } |
| 460 | }, |
| 461 | "tva": { |
| 462 | "regime": "franchise | reel_simplifie | reel_normal", |
| 463 | "returns_filed": [], |
| 464 | "tva_collectee_total": 0, |
| 465 | "tva_deductible_total": 0, |
| 466 | "credit_tva_bf": 0, |
| 467 | "franchise_threshold_exceeded": false |
| 468 | }, |
| 469 | "cotisations_sociales": { |
| 470 | "regime": "micro_social | tns_reel", |
| 471 | "declarations": [], |
| 472 | "total_cotisations_paid": 0, |
| 473 | "acre_applied": false, |
| 474 | "cipav_affiliated": false, |
| 475 | "versement_liberatoire_ir_paid": 0 |
| 476 | }, |
| 477 | "cfe": { |
| 478 | "amount_paid": 0, |
| 479 | "commune": "" |
| 480 | }, |
| 481 | "prior_year": { |
| 482 | "rfr": 0, |
| 483 | "impot_net": 0, |
| 484 | "parts_fiscales": 0, |
| 485 | "pas_rate": 0, |
| 486 | "deficits_reportables": 0, |
| 487 | "bnc_bic_declared": 0 |
| 488 | }, |
| 489 | "home_office": { |
| 490 | "qualifies": false, |
| 491 | "percentage": 0, |
| 492 | "method": "surface | forfait" |
| 493 | }, |
| 494 | "credits_reductions": { |
| 495 | "dons": 0, |
| 496 | "emploi_domicile": 0, |
| 497 | "garde_enfants": 0, |
| 498 | "other": [] |
| 499 | }, |
| 500 | "open_flags": [], |
| 501 | "refusals_triggered": [], |
| 502 | "documents_received": [] |
| 503 | } |
| 504 | ``` |
| 505 | |
| 506 | --- |
| 507 | |
| 508 | ## Section 9 -- Refusal handling |
| 509 | |
| 510 | Refusals fire from either the refusal sweep (Section 2) or during inference (e.g., corporate structure discovered in documents). |
| 511 | |
| 512 | **Refusal catalogue:** |
| 513 | |
| 514 | - **R-FR-1 -- SASU / SAS.** "SASU and SAS are subject to impôt sur les sociétés. The dirigeant is an assimilé salarié. I'm set up for self-employed individuals filing personal income tax. You need an expert-comptable who handles IS returns and paie." |
| 515 | - **R-FR-2 -- EURL at IS.** "EURL at IS files corporate returns (liasse 2065). I handle personal income tax filings only." |
| 516 | - **R-FR-3 -- SCI.** "SCI (Société Civile Immobilière) has its own filing requirements (2072). This is outside my scope." |
| 517 | - **R-FR-4 -- SAS/SARL with >10 employees.** "Companies with more than 10 employees have complex payroll, DSN, and social obligations I don't cover. You need an expert-comptable with a cabinet social." |
| 518 | - **R-FR-5 -- Agricultural activity.** "Agricultural income (bénéfices agricoles) is filed on 2342/2143 and subject to MSA, not URSSAF. Different regime entirely. You need a CGA or expert-comptable specialising in agriculture." |
| 519 | - **R-FR-6 -- Non-resident.** "Non-residents file with the SIP des non-résidents and have different rules. I'm set up for full-year France residents only." |
| 520 | - **R-FR-7 -- Association.** "Associations (loi 1901) have separate filing obligations. Not in scope." |
| 521 | |
| 522 | When a refusal fires: |
| 523 | 1. Stop the workflow |
| 524 | 2. State the specific reason in one sentence |
| 525 | 3. Recommend the path forward (specific practitioner type) |
| 526 | 4. Offer to continue with partial help ONLY if the out-of-scope item is cleanly separable (rare) |
| 527 | |
| 528 | **Do not:** |
| 529 | - Apologize profusely |
| 530 | - Try to work around the refusal |
| 531 | - Suggest the user "might be able to" fit into scope if they answer differently |
| 532 | - Continue silently |
| 533 | |
| 534 | --- |
| 535 | |
| 536 | ## Section 10 -- Self-checks |
| 537 | |
| 538 | **Check IN1 -- No one-question-at-a-time prose in the refusal sweep.** If the skill asked "Question 1 of 10" or walked through questions as separate messages, check fails. |
| 539 | |
| 540 | **Check IN2 -- Refusal sweep used ask_user_input_v0.** The first substantive interaction used the interactive tool, not prose questions. |
| 541 | |
| 542 | **Check IN3 -- Upload-first flow honoured.** After refusal sweep, the skill asked for a document dump before asking any content questions. |
| 543 | |
| 544 | **Check IN4 -- Documents were parsed and inferred before asking questions.** The inference summary (Section 5) was shown before gap-filling questions (Section 6). |
| 545 | |
| 546 | **Check IN5 -- Gap-filling only asked about things NOT visible in documents.** If the skill asked "did you pay URSSAF" after the bank statement showed URSSAF debits, check fails. |
| 547 | |
| 548 | **Check IN6 -- Open flags captured.** Anything ambiguous, risky, or attention-worthy during inference is in the `open_flags` list in the handoff package. |
| 549 | |
| 550 | **Check IN7 -- Handoff to `fr-return-assembly` is explicit.** The user was told "I'm now going to run the return preparation," and the downstream orchestrator was explicitly invoked with the intake package. |
| 551 | |
| 552 | **Check IN8 -- Reviewer step was stated upfront and reiterated before handoff.** The opening message mentioned expert-comptable signoff. |
| 553 | |
| 554 | **Check IN9 -- Refusals were clean.** No hedging. Stop means stop. |
| 555 | |
| 556 | **Check IN10 -- No meta-commentary about workflow phases.** The skill did not say "Phase 1," "Phase 2," etc. |
| 557 | |
| 558 | **Check IN11 -- Total user-facing turn count is low.** Target: 8 turns or fewer from start to handoff for a prepared user (1 refusal batch + 1 upload + 1 confirmation + 1-3 gap fills + 1 handoff). More than 12 turns for a normal intake is a check failure. |
| 559 | |
| 560 | **Check IN12 -- TVA regime was established.** Franchise en base vs réel simplifié vs réel normal was confirmed before inference, as it changes how every transaction is classified. |
| 561 | |
| 562 | **Check IN13 -- Franchise en base threshold was verified.** If micro-entrepreneur CA exceeds €36,800 (services) or €91,900 (goods), the franchise en base is lost and TVA registration is mandatory. This must be flagged. |
| 563 | |
| 564 | --- |
| 565 | |
| 566 | ## Section 11 -- Performance targets |
| 567 | |
| 568 | For a prepared user (documents in a folder, ready to upload): |
| 569 | - **Refusal sweep**: 60 seconds (1-2 interactive turns) |
| 570 | - **Document upload**: 2 minutes (1 upload turn) |
| 571 | - **Inference and confirmation display**: 1 minute Claude processing + 1 turn for user confirmation |
| 572 | - **Gap filling**: 2 minutes (2-3 interactive turns) |
| 573 | - **Handoff**: immediate |
| 574 | - **Total**: ~7 minutes |
| 575 | |
| 576 | For an unprepared user (has to go fetch documents): |
| 577 | - Refusal sweep: same |
| 578 | - Document discovery: 10-20 minutes offline |
| 579 | - Rest: same |
| 580 | - **Total**: 15-25 minutes |
| 581 | |
| 582 | --- |
| 583 | |
| 584 | ## Section 12 -- Cross-skill references |
| 585 | |
| 586 | **Inputs:** User-provided documents and answers. |
| 587 | |
| 588 | **Outputs:** Structured intake package consumed by `fr-return-assembly`. |
| 589 | |
| 590 | **Downstream skills triggered (via fr-return-assembly):** |
| 591 | - `france-tva` -- TVA return (CA3/CA12) or franchise en base verification |
| 592 | - `france-income-tax` -- Déclaration de revenus (2042 / 2042-C-PRO / 2035 / 2031) |
| 593 | - `france-cotisations` -- Cotisations sociales (URSSAF micro-social or TNS réel) |
| 594 | - `fr-estimated-tax` -- Prélèvement à la source rate update and acomptes contemporains |
| 595 | |
| 596 | --- |
| 597 | |
| 598 | ### Change log |
| 599 | |
| 600 | - **v1.0 (May 2026):** Initial draft. Upload-first, inference-then-confirm pattern modelled on mt-freelance-intake v0.1. |
| 601 | |
| 602 | ## End of Intake Skill v1.0 |
| 603 | |
| 604 | |
| 605 | --- |
| 606 | |
| 607 | ## Disclaimer |
| 608 | |
| 609 | This skill and its outputs are provided for informational and computational purposes only and do not constitute tax, legal, or financial advice. Open Accountants and its contributors accept no liability for any errors, omissions, or outcomes arising from the use of this skill. All outputs must be reviewed and signed off by a qualified professional (such as a CPA, EA, tax attorney, or equivalent licensed practitioner in your jurisdiction) before filing or acting upon. |
| 610 | |
| 611 | The most up-to-date, verified version of this skill is maintained at [openaccountants.com](https://openaccountants.com). Log in to access the latest version, request a professional review from a licensed accountant, and track updates as tax law changes. |
| 612 |
Run this skill, then get an accountant to check it
After running the full skill pack in your AI agent, sign up and upload your worksheet. We'll connect you with a trusted accountant in our network who can review your numbers before you file.
Verification status
Research-verified
Drafted from authoritative sources (tax authority sites, Big-4 summaries). Awaiting credentialed sign-off.
Needs section-by-section practitioner review to reach accountant-verified.
Section review progress
About
ALWAYS USE THIS SKILL when a user asks for help preparing their French tax returns AND mentions freelancing, auto-entrepreneur, micro-entrepreneur, entreprise individuelle, profession libérale, or self-employment. Trigger on phrases like "aide-moi avec mes impôts", "préparer ma déclaration", "I'm a freelancer in France", "I'm an auto-entrepreneur", "prepare my 2042-C-PRO", or any similar phrasing where the user is a France-resident self-employed individual needing tax return preparation. This is the REQUIRED entry point for the French self-employed tax workflow -- every other skill in the stack (france-tva, france-income-tax, france-cotisations, fr-return-assembly) depends on this skill running first to produce a structured intake package. Uses upload-first workflow -- the user dumps all their documents and the skill infers as much as possible before asking questions. Uses ask_user_input_v0 for structured questions instead of one-at-a-time prose. Built for speed. France full-year residents only; self-employed individuals, micro-entrepreneurs, and sole proprietors.
Use this skill
This skill is open source and free to use in any AI agent. Copy it, download it, or clone the repo. If you find an error, report an issue — a licensed accountant will review.