# Unformal — complete site content > Replace forms with AI conversations. Create a Pulse, share a link, get structured data back. Generated from 15 pages. Source of truth: https://unformal.ai --- # Unformal — Conversations, not forms > Replace forms with AI conversations that listen, follow up, and adapt. Create a Pulse, share a link, get structured data back. **URL:** https://unformal.ai **Topics:** Unformal, Pulse, Echo, Resonance, conversational forms, Typeform alternative ## Summary Unformal replaces static forms with AI-led conversations. You describe what you want to learn (an 'intention'), Unformal generates an adaptive conversational flow, and you share it as a link. Each response returns a transcript plus structured data (an 'Echo'). Across many responses, Resonance surfaces themes, consensus and divergence. Pricing is per conversation from EUR 0.09, with no subscription. --- ## Forms ask. Conversations listen. A form takes whatever someone types and moves on. When a client writes "We need a new website," a form shows the next field. Unformal asks what is driving the redesign, who the audiences are, and what success looks like. That difference compounds. You stop collecting answers and start understanding people. ## How it works 1. **Describe your intention.** One sentence about what you want to learn. No form building, no logic branches. 2. **Share the link.** Unformal generates an adaptive conversation with smart follow-ups, adaptive inputs and voice dictation. 3. **Get structured data back.** Each conversation returns an Echo you can compare, export or pipe into a workflow. ## What makes the conversation work - **Smart follow-ups** — the AI probes where a form would move on. - **Adaptive inputs** — chips, checklists and dynamic ranges appear when they fit the question, instead of a wall of text fields. - **Voice dictation** — respondents can talk instead of type. - **Resonance** — after many conversations you get themes, consensus points, divergent opinions and recommended actions, not a bar chart. ## Built to be used by agents too Unformal has a public API, a published skill file and an `llms.txt`. An agent can create a Pulse, share it and read the structured results without a human touching the UI. ## Common questions ### What is Unformal? A conversation-first input platform. Instead of building a form, you describe what you want to learn and Unformal runs an AI conversation with each respondent, returning structured data. ### How is it different from a form builder? Forms cannot ask follow-ups. Unformal adapts in real time to what each person says, probing for depth where a form would move to the next field. ### What do I get back? Every conversation produces an Echo: the fields you defined, a summary, key quotes, a sentiment score and subtext. Across responses, Resonance aggregates themes and recommended actions. ### What does it cost? Per conversation, starting at EUR 0.09, with volume tiers down to EUR 0.025. There is no monthly subscription and no per-seat charge. --- # Core concepts > Pulse, Conversation, Echo and Resonance — the four objects everything else in Unformal is built from. **URL:** https://unformal.ai/docs/concepts **Topics:** Pulse, Conversation, Echo, Resonance, intention ## Summary Unformal has four core objects. A Pulse is a conversational flow defined by an intention string, replacing what would be a form. A Conversation is one person's response to a Pulse, containing the full transcript. An Echo is the structured data extracted from a conversation: the fields you defined, a summary, key quotes, a sentiment score and subtext. Resonance is aggregate insight across many conversations: themes, consensus points, divergent opinions and recommended actions. --- ## Pulse A conversational flow you create. Like a form, but it's an AI conversation. A Pulse is defined by an **intention**: one sentence describing what you want to learn. You do not build questions. The intention generates them, and the AI adapts them per respondent. ## Conversation One person's response to a Pulse. A Conversation holds the full transcript — every question asked, every answer given, in order. Because questions adapt, two conversations on the same Pulse will not be identical. That is the point. ## Echo The structured data extracted from a Conversation: - the fields you defined on the Pulse - a summary of what the person said - key quotes - a sentiment score - subtext — what they implied but did not state An Echo is what makes conversational input comparable. You get prose *and* rows. ## Resonance Aggregate insight across many Conversations. Where a form tool gives you a bar chart, Resonance gives you themes, consensus points, divergent opinions and recommended actions. Example, after 20 employee pulse checks: "65% flag career growth as their top concern. 40% specifically cite lack of internal mobility. Engineering is 3x more likely to mention management." ## Common questions ### What is a Pulse? A conversational flow you create, defined by an intention describing what you want to learn. It is the Unformal equivalent of a form. ### What is an Echo? The structured data extracted from one conversation: the fields you defined, a summary, key quotes, a sentiment score and subtext. ### What is Resonance? Aggregate insight across many conversations — themes, consensus points, divergent opinions and recommended actions, rather than a chart of counts. --- # Pricing > Credit-based pricing from EUR 0.09 per conversation. No subscription, no response caps, no per-seat charges. **URL:** https://unformal.ai/pricing **Topics:** pricing, credits, Starter, Growth, Scale, Enterprise ## Summary Unformal charges per conversation using prepaid credits rather than a monthly subscription. Tiers: Starter 100 credits for EUR 9 (EUR 0.09 each), Growth 500 for EUR 29 (EUR 0.058), Scale 2000 for EUR 79 (EUR 0.04), Enterprise 10000 for EUR 249 (EUR 0.025). All tiers include adaptive AI conversations, Echo structured extraction, Resonance aggregate insights, voice dictation, and full API and webhook access. New accounts start with free conversations. --- ## Credit tiers | Tier | Credits | Price | Per conversation | |---|---|---|---| | Starter | 100 | €9 | €0.09 | | Growth | 500 | €29 | €0.058 | | Scale | 2,000 | €79 | €0.04 | | Enterprise | 10,000 | €249 | €0.025 | One credit is one conversation. Volume lowers the unit price; it does not unlock features. ## Included at every tier - Adaptive AI conversations - Echo — structured extraction from every conversation - Resonance — aggregate insight across responses - Voice dictation - Full API and webhook access ## Pro features - **Self-improving Pulses** — the AI analyses response patterns and suggests improvements - **Custom branding** — your logo and colours on your Pulses - **Custom completion redirects** — send respondents anywhere after they finish - **Priority AI models** — faster, higher-quality responses - **Team members** — up to 5 per workspace - **No "Powered by Unformal" watermark** ## How this compares A subscription form tool charges the same whether you collect five responses or five hundred. For a 200-person company running quarterly pulse checks, Unformal costs about €72 per quarter. No annual contract, no response caps. ## Common questions ### Is there a subscription? No. You buy credits and spend them per conversation. Credits do not expire monthly and there are no per-seat charges. ### What happens when I run out of credits? Your Pulses stop accepting new conversations until you top up. Existing data and results stay accessible. ### What is included at every tier? Adaptive AI conversations, Echo structured extraction, Resonance aggregate insights, voice dictation, and full API plus webhook access. Tiers differ on price per conversation, not features. --- # Try a demo > Live Unformal Pulses you can complete in a couple of minutes. See what a real conversation feels like versus a form. **URL:** https://unformal.ai/demo **Topics:** demo, Interview mode, Extract mode, Agentic Score, try Unformal ## Summary Three live demo Pulses anyone can try without an account. "How agentic are you?" asks three questions about AI usage and returns an Agentic Score (Interview mode). "Describe your work setup" lets you write freely and extracts structure from it (Extract mode). "Escape Odoo" is an ERP intake built for Enobase (Interview mode). Each takes about two minutes and demonstrates adaptive follow-ups, adaptive inputs and structured output. --- The fastest way to understand Unformal is to be on the other side of one. Each of these takes about two minutes. ## 🤖 How agentic are you? 3 questions about your AI usage. Get your Agentic Score. *Interview mode* — [unformal.ai/p/how-agentic-are-you](https://unformal.ai/p/how-agentic-are-you) ## 🖥️ Describe your work setup Dump everything about how you work. AI extracts structure from the chaos. *Extract mode* — [unformal.ai/p/work-setup-extract](https://unformal.ai/p/work-setup-extract) ## 🔥 Escape Odoo ERP intake for Enobase. We'll gently roast your current setup. *Interview mode* — [unformal.ai/p/escape-odoo](https://unformal.ai/p/escape-odoo) ## What to notice - The conversation **follows up** on what you actually said, instead of moving to the next field. - **Adaptive inputs** appear when they fit: chips, checklists, sliders — not a wall of text boxes. - At the end you get an **Echo**: structured data, not a transcript you have to read. ## Common questions ### Can I try Unformal without an account? Yes. All three demo Pulses are public links you can complete in about two minutes with no signup. ### What is the difference between Interview and Extract mode? Interview mode asks questions one at a time and follows up. Extract mode lets you write everything first, then asks only about what is missing. --- # Unformal vs Typeform > Typeform asks one question at a time. Unformal has an actual conversation — it listens, follows up, and adapts to every response. **URL:** https://unformal.ai/compare **Topics:** Typeform, Typeform alternative, form builder comparison, conversational forms ## Summary A direct comparison with Typeform. Typeform shows pre-configured questions with logic branches and charges a monthly subscription of USD 29-129 regardless of volume. Unformal runs an adaptive AI conversation that asks its own follow-ups, charges EUR 0.09 per conversation, and aggregates responses into Resonance themes rather than bar charts. Typeform remains stronger for simple high-volume collection, native integrations and template breadth. --- ## Typeform made forms prettier. We made them obsolete. ## Where Typeform falls short **No follow-ups.** When someone types "We need a new website," Typeform shows the next question. Unformal asks "What's driving the redesign?" It's the difference between collecting answers and having a conversation. **No adaptation.** Typeform's logic branches are pre-configured. Unformal's AI adapts in real time to what the respondent actually says. No setup required. **Subscription trap.** Typeform charges $29–129/month even if you collect 5 responses. Unformal charges per conversation — €0.09 each. You pay for what you use. **No aggregate intelligence.** After 100 Typeform responses, you get a bar chart. After 100 Unformal conversations, you get Resonance: themes, consensus points, divergent opinions, and recommended actions. ## Where Typeform still wins (honest take) - 150K+ customers and a massive template library - More integrations out of the box (Zapier, HubSpot, Salesforce native) - Better for simple, high-volume data collection where you don't need depth - Polished visual design (though Unformal is catching up) ## Unformal wins when - You need depth, not just data - You want answers to questions you didn't know to ask - Your form's completion rate is a problem - You need structured data that feeds into a workflow - You're paying too much for Typeform and not using most features ## Pricing comparison No monthly commitment. No response caps. No per-seat charges. ## Common questions ### How is Unformal different from Typeform? Typeform shows the next pre-configured question. Unformal asks follow-ups the AI generates in real time based on what the respondent actually said. ### Is Unformal cheaper than Typeform? For low and moderate volumes, yes. Typeform charges USD 29-129 per month even for five responses. Unformal charges EUR 0.09 per conversation with no monthly commitment. ### When is Typeform the better choice? Simple, high-volume data collection where you do not need depth, or when you need native Zapier, HubSpot or Salesforce integrations and a large template library. --- # Best practices > Practical playbooks for writing intentions, designing output fields and choosing conversation length. **URL:** https://unformal.ai/docs/best-practices **Topics:** intention, output fields, topics, Extract mode, Pulse configuration ## Summary Guidance for configuring a Pulse well. The intention is the most important field: aim for 2-4 sentences covering what to learn, who will answer and what decision it informs. Output fields work best at 8-12, in snake_case, with plain-English descriptions the AI can act on and no overlapping fields. Define 5-7 topics for an 8-12 question conversation, written as themes rather than questions. Extract mode suits brain dumps, technical stakeholders, bug reports and quick intake, where the respondent writes first and the AI asks only about what is missing. --- Practical playbooks for getting the most out of Unformal. The difference between a Pulse that collects noise and one that produces signal is mostly in how you set it up. ## Writing a great intention The intention is the most important field in a Pulse. It's what the AI reads to understand what conversation to have. A vague intention produces a vague conversation. A precise one produces sharp, useful output. ### The formula - What to learn - Who will answer - What it informs - **Good:** Understand what a new architecture client needs before our first meeting — their budget, project scope, timeline, and what a successful outcome looks like for them. Use this to prepare a tailored proposal. - **Avoid:** Collect information from potential clients - **Good:** Gather structured feedback from beta users about their experience with the onboarding flow. I want to know where they got confused, what they loved, and what's stopping them from using the feature daily. This feeds into our next sprint planning. - **Avoid:** Get feedback on our product - Be specific about what you want to learn — the more concrete, the better the questions - Include who will be answering ("potential client", "beta user", "internal team member") - Mention the downstream decision: what will you do with this information? - Aim for 2–4 sentences. Too short = vague. Too long = the AI gets confused about priorities. | Type | Use for | |---|---| | `string` | Qualitative data, descriptions, free-text answers | | `number` | Quantitative values, ratings, counts, durations | | `boolean` | Yes/no questions, flags, presence/absence | | `array` | Lists of items, multiple options, ranked preferences | ### Write descriptions the AI can act on The description isn't just for you — the AI reads it to know what to extract. Vague descriptions produce vague extractions. - **Clear field:** budget_range — Estimated annual budget range the respondent is working with, as a string like '€10k–50k' or 'under €5k' - **Vague field:** budget - **Specific and actionable:** decision_blockers — Array of specific concerns, objections, or blockers preventing the respondent from moving forward right now - **Too generic:** notes ### Sweet spot: 8–12 fields Too few fields and you miss important data. Too many and the AI tries to cram every topic into a short conversation, producing shallow answers. | Field count | Result | |---|---| | < 5 fields | Likely missing important dimensions | | 8–12 fields | The sweet spot for most use cases | | > 15 fields | Conversations feel rushed and shallow | - Use snake_case for names: budget_range not Budget Range - Mix types: some strings for qualitative, some numbers for quantitative, arrays for lists - Write descriptions in plain English — imagine explaining to a junior analyst what to look for - Avoid overlapping fields — if two fields could capture the same thing, merge them ### Defining topics Topics tell the AI what areas to cover. Without topics, the AI makes reasonable guesses from your intention — but topics give you control over coverage. // Good topics for a client intake Pulse - Define 5–7 topics for an 8–12 question conversation - Write topics as themes, not specific questions — let the AI phrase them naturally - Order topics roughly: context first, specifics later, goals last - The AI will follow interesting threads — topics ensure nothing important gets skipped | Audience | Typical length | |---|---| | Talking to enterprise buyers | 15–20 questions | | Creative professionals, architects | 8–12 questions | | Internal team members | 3–5 questions | ## 🗒️ Extract mode tips Extract mode flips the dynamic: the respondent writes everything they want to say first, then the AI asks only about what's missing. It's faster, less friction, and works best when respondents already know what they want to share. ### When to use Extract mode - Brain dumps - Technical stakeholders - Bug reports - Quick intake ### Optimizing Extract mode output fields In Extract mode, the AI tracks field coverage as the respondent writes. It only asks follow-up questions about fields that weren't addressed. Make sure your output fields cover everything you actually need. ## Use case examples Real configurations for common scenarios. ### Client intake Intention "Understand what a new client needs before our first meeting — budget range, project scope, timeline, and what success looks like. Use this to prepare a proposal." Key output fields budget_range · project_type · timeline · decision_maker · current_solution · pain_points (array) · success_criteria · next_steps ### User research Intention "Learn how beta users experience the onboarding flow. Find where they get confused, what clicks, and what stops them using the feature daily. Feeds into next sprint." Key output fields first_impression · confusion_points (array) · aha_moment · daily_blocker · feature_rating (number) · missing_features · recommendation_likelihood (number) ### Brain dump intake Intention "Get all the context from a colleague about a project they've been running — status, blockers, key decisions made, what still needs to happen. I'm taking it over and need to get up to speed quickly." Key output fields project_status · key_decisions (array) · active_blockers (array) · next_steps (array) · stakeholders (array) · context_notes Welcome screen copy: "Write down everything you know about this project — don't worry about structure. The AI will organize it and ask about anything missing." ## Common questions ### How long should an intention be? Two to four sentences. Too short is vague; too long and the AI loses track of priorities. Cover what you want to learn, who is answering, and what decision it informs. ### How many output fields should a Pulse have? Eight to twelve for most use cases. Under five usually misses important dimensions; over fifteen makes conversations feel rushed and shallow. ### When should I use Extract mode? For brain dumps, technical stakeholders, bug reports and quick intake — cases where the respondent already knows what they want to say. --- # HR & People Teams > Replace checkbox surveys with AI conversations that adapt to each employee and surface the patterns you need to act on. **URL:** https://unformal.ai/use-cases/hr **Topics:** employee engagement, pulse check, 360 feedback, onboarding feedback, performance review ## Summary For HR and People teams running engagement pulse checks, onboarding feedback, team feedback interviews, performance reviews, 360 feedback and training feedback. Traditional surveys get low completion and shallow answers because a checkbox survey cannot ask follow-ups. Unformal runs an adaptive conversation per employee and aggregates results into Resonance patterns. Costs EUR 0.09 per conversation with no per-seat pricing; roughly EUR 72 per quarter for a 200-person company running quarterly pulse checks. --- ## Your feedback surveys aren't capturing what matters You send a pulse check. 14 questions. Multiple choice. One open text box at the end: "Any additional comments?" Most people don't complete it. The ones who do click through in two minutes without thinking. The open text box gets "N/A" or "Nothing to add." You learn nothing you didn't already know. The real issues stay unspoken. Not because people don't want to share, but because a checkbox survey doesn't know how to ask follow-ups. ## Every employee gets a real conversation **The AI adapts.** If someone mentions workload, it probes. If someone's frustrated, it asks what would help. If someone's thriving, it asks what specifically made the difference. **Depth at scale.** Run 50 feedback conversations in parallel. Each one feels 1:1. Each one produces structured data you can compare. **Resonance shows the patterns.** After 20 pulse checks: "65% flag career growth as their top concern. 40% specifically cite lack of internal mobility. Engineering is 3x more likely to mention management." **Employees feel heard.** A conversation that listens and follows up sends a different signal than a form that doesn't care what you answer. ## Works for any HR conversation | Conversation | Replaces | What you get | |---|---|---| | Engagement pulse checks | 40-question annual survey | Monthly 5-minute conversations that track sentiment over time | | Onboarding feedback | "How was your first week?" email | Structured insights about what works and what confuses new hires | | Team feedback interviews | 1:1 notes in a doc nobody opens again | Structured insights about blockers, morale, and growth across the whole team | | Performance reviews | Annual review forms | Real conversations about growth, blockers, aspirations | | 360 feedback | Peer review forms | Nuanced feedback that captures specifics, not just ratings | | Training & event feedback | "Rate 1–5" follow-up survey | What actually stuck, what didn't, and what people want next | ## Pricing €0.09 per conversation. No per-seat pricing. For a 200-person company running quarterly pulse checks: €72/quarter. No annual contracts. ## Common questions ### Why do engagement surveys produce shallow data? Because a checkbox survey cannot ask follow-ups. The real issues stay unspoken, not because people do not want to share, but because nothing probes further. ### Can this scale across a whole company? Yes. Conversations run in parallel and each one feels one-to-one while producing structured, comparable data. ### What does it cost for a 200-person company? About EUR 72 per quarter for quarterly pulse checks, at EUR 0.09 per conversation with no per-seat pricing or annual contract. --- # Agencies & Creative Teams > Replace your intake form with a conversation that understands what the client actually wants — before you spend time on a proposal. **URL:** https://unformal.ai/use-cases/agencies **Topics:** creative brief, client intake, agency proposal, scoping call, RFP ## Summary For agencies and creative teams whose intake forms return 'We need a new website', 'Budget: TBD' and 'Timeline: ASAP'. That leaves two bad options: a 45-minute scoping call or a proposal based on guesswork. Unformal runs a conversational brief that probes for redesign drivers, audiences, success metrics, budget range via slider, stakeholders and must-haves, returning a structured brief. Costs EUR 0.09 per brief, not per seat or per month. --- ## Your intake form is losing you scope and money A new client inquiry comes in. You send them your intake form. Here's what comes back: - **Describe your project:** "We need a new website" - **Budget:** "TBD" - **Timeline:** "ASAP" - **Target audience:** "Everyone" - **Brand guidelines:** *(left blank)* Now you have two choices: schedule a 45-minute scoping call to actually understand the project, or write a proposal based on guesswork. Both waste time. The form failed because forms can't ask follow-ups. When someone writes "We need a new website," a form can't ask "What's wrong with your current one?" ## What if a creative brief was a conversation? **It probes for depth.** "We need a new website" → "What's driving the redesign?" → "Who are the main audiences?" → "What does success look like?" The AI asks the follow-ups your form can't. **It captures the full picture.** Budget range (with a slider, not a text field), timeline, stakeholders, inspiration examples, must-haves vs nice-to-haves — all structured and comparable. **Clients actually enjoy it.** It feels like talking to someone who cares about their project. They share more, including context they wouldn't type into a form. **Your proposals improve.** Every Echo gives you a structured brief you can use to scope, price, and pitch accurately — without the scoping call. ## Before vs after | | Intake form | Unformal brief | |---|---|---| | Project description | "We need a new website" | Full context: redesign drivers, audiences, competitor examples, success metrics | | Budget | "TBD" | €15K–25K range (captured via slider) | | Timeline | "ASAP" | "Q3 launch, board presentation in September" | | Scoping call needed? | Almost always | Rarely — brief is complete | | Proposal accuracy | 50/50 | High — based on real context | | Client impression | "Another form to fill out" | "This agency actually cares about understanding us" | ## Pricing €0.09 per brief. Not per seat, not per month. ## Common questions ### Why do intake forms fail for agencies? Forms cannot ask follow-ups. When someone writes 'We need a new website', a form cannot ask what is wrong with the current one. ### Does this remove the scoping call? Usually. Because the brief arrives complete, a scoping call becomes the exception rather than the default. ### How do clients react to it? It reads as an agency that cares about understanding them, rather than another form to fill out, so they share more context. --- # Accelerators & Programs > Screen 200 applicants without reading 200 forms. An AI conversation that adapts to each applicant and returns structured, comparable data. **URL:** https://unformal.ai/use-cases/accelerators **Topics:** accelerator, incubator, application screening, cohort selection, applicant review ## Summary For accelerators, incubators and programs running application screening. Traditional application forms return one-line answers that cannot be compared, drive roughly 33% completion, and still require follow-up calls with the shortlist. Unformal runs a two-minute adaptive conversation per applicant covering product, market, traction, team and differentiation, returning a structured Echo per applicant and Resonance patterns across the cohort. Completion rises above 80%, and reviewing 200 applications drops from 15-20 hours to 2-3. Screening 200 applicants costs roughly EUR 9-29. --- ## Your application forms are giving you garbage data **Shallow answers.** "Describe your startup" gets one line: "We're building a platform." Your form can't ask follow-ups. **Can't compare applicants.** Some write 3 words. Others write 3 paragraphs. There's no structure. You spend hours reading applications that tell you nothing. **Applicants hate it.** 67% of people abandon online forms before finishing. Your best applicants — the busy ones — are the most likely to drop off. **You schedule calls anyway.** After reading 200 applications, you still need 30-minute calls with the top 50. The form was supposed to save time. It created more work. ## How it works 1. **Describe your goal.** "I want to screen applicants for our spring cohort. I need to understand their startup, stage, team, market, traction, and what they're looking for." 2. **AI builds the conversation.** Unformal generates the right questions, follow-ups, and adaptive inputs (sliders for ratings, rankings for priorities, multi-select for sectors). 3. **Share a link.** Send it to applicants by email, embed it on your website, or include it in your existing application flow. 4. **Review structured results.** Each applicant's Echo gives you comparable data. Resonance shows aggregate patterns across all applicants. ## Form vs. Unformal | | Application form | Unformal | |---|---|---| | "Describe your startup" | "We're building a platform" | 2-minute conversation covering product, market, traction, team, and differentiation | | Data structure | Whatever they typed | Structured Echo with defined fields, directly exportable | | Completion rate | ~33% | 80%+ | | Follow-up needed | Almost always | Rarely — the conversation already went deep | | Applicant experience | Homework | A conversation that respects their time | | Time to review 200 apps | 15–20 hours | 2–3 hours (structured data, searchable) | ## Pay per conversation. No subscription. | Credits | Price | Per conversation | |---|---|---| | 100 | €9 | €0.09 | | 500 | €29 | €0.058 | | 2,000 | €79 | €0.04 | For a program screening 200 applicants: €9–29. Compare that to the hours saved. ## Common questions ### How long does it take to review 200 applications? Two to three hours with structured, searchable data, compared with 15 to 20 hours reading free-text form responses. ### What completion rate should we expect? Over 80%, against roughly 33% for a typical application form. ### What does screening a cohort cost? About EUR 9 to 29 for 200 applicants, on per-conversation pricing with no subscription. --- # Local Government & Public Sector > Consultations citizens actually finish. Multilingual, voice-first, structured data out. GDPR-compliant and EU-hosted. **URL:** https://unformal.ai/use-cases/local-government **Topics:** public consultation, citizen engagement, GDPR, multilingual, hub.brussels, public sector ## Summary For public sector consultation. Long consultation forms see 20-30% completion, need a separate form per language, produce free-text that has to be manually coded, and deliver insight after the window to act has closed. Unformal runs a short multilingual conversation (FR, NL, EN, DE auto-detected in one Pulse) with voice input, returning a structured Echo per respondent and Resonance across all of them. EU-hosted and GDPR-compliant, with data staying in region. Two consultations built for hub.brussels run in production today. Pilots are pay-per-conversation; design-partner engagements start from EUR 10,000. --- ## Public consultation is broken. Everyone knows it. **The form nobody finishes.** Two-thirds of respondents abandon online forms before the end. On long consultation forms, it's worse. The people you most want to hear from, busy entrepreneurs, working parents, small associations, drop off first. **One language per form.** Brussels runs in FR and NL. Flanders serves FR and English-speaking residents too. Every added language doubles the work, and the translations drift. **Free-text in, manual coding out.** Open questions give you honest answers, but someone has to read 400 paragraphs and tag them. Usually a stagiaire. Sometimes a consultant. Always slow. **Insight lands too late.** By the time the report is written, the window to act on it has closed. The next call for input goes out, and the cycle repeats. ## Two live examples, running in production Both were built for hub.brussels. You can try them right now, on your phone, in 2 minutes. - **[Information point for entrepreneurs](https://unformal.ai/p/hub-info)** — a conversation that helps a Brussels-based entrepreneur figure out what support they need, what permits apply, and who to talk to at the region. - **[Sustainability self-assessment](https://unformal.ai/p/hub-sustainability)** — a 4-minute self-assessment that helps a business understand their sustainability posture across energy, mobility, waste, and social impact, with a tailored report at the end. ## How it works 1. **Describe the consultation.** "I'm running a sustainability self-assessment for local businesses. I want to understand where they stand on energy, mobility, waste, and social impact, and what support they'd need to improve." 2. **AI builds the conversation.** Unformal generates the right questions, follow-ups, and adaptive inputs (sliders for scoring, chips for quick selection, voice for open answers). Multilingual out of the box. 3. **Share a link.** Email it, put it on your website, include it in a campaign. Works on any phone, no app install. Citizens can reply in the language they prefer. 4. **Review structured results.** Every respondent gets an Echo (structured summary of their answers). Across all respondents, Resonance surfaces the consensus, the divergence, and the themes worth acting on. ## Static form vs. Unformal | | Static form | Unformal | |---|---|---| | Completion rate | ~20–30% on long consultation forms | 80%+ (conversation adapts, respondent can speak) | | Languages | One form per language, maintained separately | FR / NL / EN / DE in the same Pulse, auto-detected | | Voice input | Not supported | Citizens can speak their answer, we transcribe and structure it | | Output data | Free-text blobs, manual coding | Structured Echo per respondent + Resonance across all respondents | | Time to insight | Weeks of manual analysis | Aggregate patterns visible the moment responses arrive | | Hosting & compliance | Varies | EU-hosted, GDPR-compliant, data stays in region | ## Built for public sector procurement - **EU-hosted** — Infrastructure runs in the EU. Citizen data stays in the EU. - **GDPR-compliant** — Data minimisation by design. Clear retention controls. DPA on request. - **Multilingual** — FR, NL, EN, DE out of the box. Respondents reply in the language they prefer. ## Start small. Scale when it works. Pay-per-conversation for a pilot. Design-partner engagement with a dedicated workspace, co-designed Pulses, and a 6-month roadmap from €10,000. Full enterprise deployments for regional and federal agencies on request. ## Common questions ### Is it GDPR-compliant and EU-hosted? Yes. Infrastructure runs in the EU, citizen data stays in the EU, with data minimisation by design, clear retention controls and a DPA on request. ### How does it handle multiple languages? FR, NL, EN and DE work in the same Pulse with automatic detection, instead of one separately maintained form per language. ### Is it running anywhere in production? Yes. Two consultations built for hub.brussels are live: an information point for entrepreneurs and a sustainability self-assessment. --- # Unformal for agents > Unformal is built to be driven by AI agents: a public REST API, a published skill file, llms.txt, and a markdown twin of every page. **URL:** https://unformal.ai/agents **Topics:** API, agent, llms.txt, MCP, Agent Skill, automation ## Summary Unformal is designed to be operated by AI agents as well as humans. Agents can sign up, create a Pulse from a single intention string, share the returned URL and read back structured results entirely through the REST API at https://unformal.ai/api/v1. Machine-readable entry points include /llms.txt (site index), /llms-full.txt (entire site as one document), a .md twin of every page, /.well-known/ai-plugin.json for discovery, and a downloadable skill file. --- ## Machine-readable by default Every page on this site has a markdown twin. Append `.md` to any path and you get clean prose with frontmatter instead of rendered HTML you would otherwise have to scrape. | Entry point | What it gives you | |---|---| | `/llms.txt` | Index of every page with descriptions | | `/llms-full.txt` | The entire site as one document | | `/.md` | That page as markdown | | `/.well-known/ai-plugin.json` | Discovery metadata | | `/sitemap-index.xml` | Standard sitemap | ## The API Unformal's API is the same surface the product uses. An agent can run the whole loop: ```bash curl -X POST "https://unformal.ai/api/v1/pulses" \ -H "Authorization: Bearer $UNFORMAL_API_KEY" \ -H "Content-Type: application/json" \ -d '{"intention": "Understand what a new client needs before our first meeting", "tone": "casual", "maxQuestions": 5}' ``` That returns a shareable URL. Share it, then read structured results back from `GET /api/v1/pulses/{id}/conversations`. New accounts can be created programmatically too: `POST /api/v1/signup` returns an API key and free credits, and `POST /api/v1/verify` confirms the emailed code. ## Core concepts - **Pulse** — a conversational flow, defined by an intention string. - **Conversation** — one person's response, with full transcript. - **Echo** — structured data extracted from a conversation: your fields, a summary, key quotes, sentiment and subtext. - **Resonance** — aggregate insight across many conversations. Full reference at [/docs/api](/docs/api). ## Common questions ### Can an agent create a Pulse without a human? Yes. POST an intention string to /api/v1/pulses with a bearer token and you get back a shareable URL. Signup and email verification are also API endpoints. ### How should an agent read this site? Fetch /llms.txt for the index, /llms-full.txt for everything at once, or append .md to any page path for that page as clean markdown. ### Where is the API documented? At /docs/api, with a machine-readable version at /docs/api.md and discovery metadata at /.well-known/ai-plugin.json. --- # Why Forms Give You Garbage Data (And What To Do About It) > 67% of people abandon online forms before finishing. The remaining 33% are satisficing. Here's why your data collection is broken and what actually works. **URL:** https://unformal.ai/blog/why-forms-give-garbage-data **Topics:** form abandonment, satisficing, data quality, survey design, conversational input ## Summary An argument that poor form data is a format problem, not a respondent problem. 67 percent of people abandon online forms; most who finish are satisficing. Forms fail because they are extraction machines that cannot follow up, treat every respondent identically, and never explain why they ask. The hidden cost is follow-up calls: 200 forms sent yields 66 returned, of which only about 20 are evaluable, leaving 46 calls at 30 minutes each, roughly 23 hours. Adaptive conversations that ask follow-ups produce far richer data from the same respondent. --- ## The open text field that ruined your data You've seen it. Maybe you built it. A form with a text field that says: "Describe your project." And the response you get back: "Good." That's not an outlier. That's the median response. And it's not because the respondent is lazy, it's because the form gave them no reason to try harder. ## The numbers are brutal 67% of people abandon an online form before finishing. That's not a design problem, that's a format problem. The remaining 33% who do finish? Most are satisficing. Checking the first acceptable option, typing the shortest acceptable answer, and racing to the Submit button. Here's what that means for your data: - Your "Describe your project" field has 3 useful responses out of 40 - Your NPS score is a number with zero context - Your dropdown data shows what people clicked, not what they think - Your open-ended questions are either blank or one sentence ## Why this happens (it's not the respondent's fault) **Forms are extraction machines.** They take your time and give you nothing back. There's no feedback, no adaptation, no sense that anyone's actually listening. **Forms can't follow up.** When someone writes "We need a new website," a human would ask "What's wrong with your current one?" A form shows the next question about budget. **Forms treat everyone the same.** A first-time applicant and a returning customer get the same 15 questions in the same order. No context, no adaptation, no intelligence. **Forms don't explain themselves.** "Please provide your phone number" — why? Is someone going to call me? The form doesn't say, so the respondent doesn't trust, so they skip or lie. ## The hidden cost: follow-up calls Here's the real expense nobody calculates. You send 200 application forms. You get 66 back (67% abandoned). Of those 66, maybe 20 have enough detail to evaluate. For the other 46, you schedule a call. 46 calls × 30 minutes = 23 hours of calls to get information that should have been in the application. The form didn't save time. It created work. ## What actually works: conversations When a conversation adapts to what someone says — following up, probing deeper, adjusting the questions — the data quality transforms. "We need a new website" becomes a 2-minute exchange that uncovers: the redesign is driven by a rebrand, the primary audience is investors (not customers), the deadline is tied to a funding round in September, and the budget is €15–25K. Same respondent. Same topic. 10x the useful information. The difference? Someone asked follow-up questions. ## Common questions ### What percentage of people abandon online forms? About 67% abandon before finishing. Of the 33% who complete, most are satisficing — choosing the first acceptable option and typing the shortest acceptable answer. ### Why do open text fields produce useless answers? Because the form gives the respondent no reason to try harder. There is no feedback, no adaptation, and no sense that anyone is listening. ### What is the hidden cost of a bad intake form? Follow-up calls. Sending 200 forms typically yields 66 responses, only about 20 of which are evaluable — leaving 46 calls at 30 minutes each, roughly 23 hours of work the form was supposed to prevent. --- # Changelog > Everything shipped on Unformal, reverse chronological. **URL:** https://unformal.ai/changelog **Updated:** 2026-08-20 **Topics:** changelog, releases, shipped features ## Summary Reverse-chronological log of features and fixes shipped on Unformal. Covers 11 dated releases, most recently 2026-04-18. Synced from the canonical changelog in the unformal-workspace repo. --- Shipped features and fixes, reverse chronological. For the roadmap and upcoming features, see Roadmap. --- ## 2026-04-18 ### CLI Documentation — @unformal/cli Now Surfaced Everywhere The `@unformal/cli` npm package has existed for a while but wasn't documented on the public site. Now surfaced in all four entry points: the `/agents` "Built for Agents" page, the `/docs/api` reference, the `UNFORMAL.md` skill file, and `llms.txt`. - Install: `npm i -g @unformal/cli` (or `npx @unformal/cli `) - Every API endpoint exposed as a subcommand — `unformal create`, `list`, `get`, `conversations`, `resonance`, `analytics`, `export`, `usage` - `--json` flag on every command for piping structured output to other agents - Source at github.com/Unformalai/unformal-skills/tree/master/cli ### Notification Routine — Claude Code Desktop Routines (Primary Path, Corrected) Recommend Claude Code desktop routines (SKILL.md files at `~/.claude/scheduled-tasks//`) as the primary notification path — these appear in the Claude Code desktop sidebar alongside other routines, run locally with access to local secrets, and let the user pick the schedule visually in the desktop UI. - Initial attempt used the `schedule` skill (remote triggers at claude.ai/code/scheduled) which was the wrong surface — those don't appear in the desktop sidebar - Corrected: `unformal-notifications` SKILL.md (in unformal-skills repo) now describes the desktop-routine pattern with the exact SKILL.md template and tempfile-based Python parsing (avoids heredoc stdin collision) - `/agents` page section updated: "Claude Code Desktop Routine" with the corrected copy-paste prompt - `UNFORMAL.md` skill updated to match - Created working example at `~/.claude/scheduled-tasks/unformal-new-responses/SKILL.md` for WAT feedback monitoring - Disabled the (wrong) remote trigger `trig_01R77BAkEBZehYSdYc5FvpRK` --- ## 2026-04-17 ### Desktop Notifications — Real-time Pulse Response Alerts New `unformal-notifications` Agent Skill in the [unformal-skills repo](https://github.com/Unformalai/unformal-skills) that gives Claude Code (or any agent) real-time awareness of new Pulse responses. - New `unformal-notifications/SKILL.md` — teaches Claude to summarize inbox events on demand, fall back to `completedSince` API polling when no listener is running, archive processed events, and act on new responses - New `unformal-listen.sh` shell script — connects to the SSE stream, shows native macOS notifications (Linux: `notify-send` fallback), writes each event to `~/.unformal/inbox/*.json` - Script also hosted at unformal.ai/unformal-listen.sh for quick one-liner install - New "Desktop Notifications" section on `/agents` page with install + demo output - UNFORMAL.md skill extended with the same notification patterns ### HR Use Case — Refocused on Feedback Surveys Shifted the HR use case page away from "exit interviews" (which felt heavy and odd to productize as a survey) toward feedback surveys and interviews — the actual sweet spot for a conversational form tool. - Hero: "What if feedback surveys captured what people really think?" - Use case table now leads with engagement pulse checks, onboarding feedback, team feedback interviews, performance reviews, 360 feedback, and training/event feedback - Nav dropdown, landing page card, and OG metadata updated to match - Exit interviews removed as a headline use case ### Interviewer-style Thinking Animation (replaces token-by-token streaming) Replaced the slow character-by-character streaming of AI responses with a rotating shimmer animation that reflects the interviewer role — words like "Listening carefully", "Taking that in", "Following your thread", "Curious to dig deeper", "Framing a follow-up", "Jotting that down". When streaming completes, the full message reveals at once with a smooth fade-in. This directly addresses the UX friction Florian flagged in WAT beta feedback — the perceived lag between questions. - New `ThinkingAnimation` component with gradient shimmer, dark-mode aware, rotates every 1.8s - Shows for the entire `isLoading` duration (was previously only before first token, then switched to live streaming) - No more slow-typing feel between questions ### Public Changelog - New public `/changelog` page at unformal.ai/changelog - Inline markdown renderer (no new dependencies) - Synced from workspace via `skills/changelog/sync-to-app.sh` - Added "Changelog" link to marketing footer - `/ship` skill updated: mandatory changelog entry before every commit, auto-sync to app --- ## 2026-04-15 ### Automated Reminders + Onboarding Drip via Resend Automations End-to-end event-driven email automation for survey reminders and new user onboarding. - New `convex/resendEvents.ts` — shared helper to fire Resend Automation events (`recipient.invited`, `conversation.completed`, `user.created`, `pulse.created`) - New `convex/resendAutomations.ts` — idempotent setup actions that create templates and automations via Resend API - Reminder sequence: 2-day delay → check for completion → send reminder → repeat once more - Onboarding drip: 1-day delay → check for pulse creation → nudge → 2-day delay → personal help email - Templates created and published in Resend dashboard programmatically - Auto-reminders toggle on pulse Distribution tab (saves `autoRemindersEnabled`) - Schema: `systemConfig` table for storing automation IDs, `autoRemindersEnabled` field on pulses ### Admin Dashboard + LLM Cost Tracking Super admin view of platform-wide metrics and real-time cost visibility. - Role-based admin access via `users.role: "admin"` (replaced email whitelist) - Token usage logging added to all 5 previously untracked backend actions: resonance, extractEcho, insightExchange, pulseOptimizer, research - New `convex/llmHelpers.ts` — shared cost calculation and usage extraction - New `/studio/admin` page: platform stats (users, workspaces, pulses), LLM costs (today/7d/30d/all-time), 14-day trend chart, cost breakdown by model and by source, top workspaces by cost - Added `source` field to `usageEvents` schema - Backfilled token costs for 20 historical completed conversations using transcript char count estimation - Fixed auth race condition in admin page (skip queries until `useConvexAuth` is loaded) ### Insight Exchange — Respondent Reward Mechanism Respondents who complete a conversation unlock personal insights + anonymized group intelligence. - Schema: `insightExchange` toggle on pulses, `insightExchangeObservation` field on conversations - New public query `resonanceHelpers.getForInsightExchange` — returns anonymized aggregate data (requires `insightExchange: true` and 3+ completions) - New `CollectiveInsightsSection` component renders below personal InsightsScreen: group sentiment bar, top themes with frequency bars, consensus/divergence cards - Phase 2: New `convex/insightExchange.ts` generates personalized AI observation contextualizing respondent's answers within group (Claude Sonnet, ~1K tokens) - Phase 3: Welcome screen shows respondent count ("14 people have shared their thoughts. Complete yours...") - API: `insightExchange` field on POST/PATCH/GET pulse endpoints, `llms.txt` docs, `UNFORMAL.md` example - Cleanup: deleted 90 abandoned test conversations - See Insight Exchange ### Email Distribution List + Automated Reminders (P0) Full workflow infrastructure for sending invitations, tracking completion, and reminding non-completers. - Schema: `pulseRecipients` table with status tracking (pending → sent → started → completed) - Mutations: `addRecipients`, `removeRecipient`, `sendInvitations`, `sendReminders`, `_updateRecipientStatus`, `_markReminded` - Actions: `sendInvitations` and `sendReminders` via Resend with branded HTML templates - Studio Distribution tab: recipient list with status badges, bulk add, send invitations, reminder settings (24h/48h/72h delays, 1/2/3 max reminders) - Conversation flow integration: `recipientToken` URL param (`?t=xxx`) tracked through create → started → completed - Automatic status updates via scheduler when conversations complete - See Email Distribution List, Reminders & Nudges ### CSV/JSON Export (P0) Data portability — download conversations from any Pulse. - `GET /api/v1/pulses/:id/export?format=csv|json` — public API endpoint - Studio InboxTab: Export dropdown (CSV or JSON) with client-side generation via Blob - CSV: flattens echo fields as columns, one row per conversation - JSON: includes full transcript, echo, and metadata - New `convex/exports.ts` + `exports_queries.ts` for action/query separation ### Pulse Creation — Custom Slug Support - Added optional `slug` field to `create` and `_createFromApi` mutations with validation (format, reserved list, uniqueness) - Shared `resolveSlug` helper replaces duplicate slug generation logic - Studio `/studio/new`: slug input with `unformal.ai/p/` prefix and debounced availability check - API: `slug` field on POST /pulses (falls back to auto-generation if omitted) - Agents get branded URLs instead of `understand-what-a-new-clie-x7k2m9` ### Built for Agents Page + Navbar - New `/agents` route (renamed from `/integrate`) — full integration guide for AI agents - Uses shared `MarketingHeader` / `MarketingFooter` for consistency across marketing pages - Added "Built for Agents" link to desktop and mobile navbar (between Docs and Sign in) - `/integrate` redirects to `/agents` for backward compatibility - Landing page CTA updated ### Completion UX Polish - Removed full-screen "Analyzing" takeover that replaced the conversation — now shows inline "Wrapping up..." spinner instead - Input field and textarea form hidden immediately when completion is detected (was still showing under "View insights" button due to form being outside the conditional block) - Reduced completion delay from 3s → 1.5s → 0.8s for snappier transition - Fixed: `onFinish` callback now uses `conversationIdRef.current` instead of `conversationId` state, ensuring the first AI message is always saved to the transcript (fixes "first message missing" bug) ### Agent Behavior Fixes - AI now skips questions in extract mode that were already answered in the initial brain dump (was re-asking for URL after user included it in Q1 dump) - Strengthened "one question per message" instruction to a CRITICAL RULE (AI was firing 2-3 questions per response) - Instructed AI to never write internal status notes like "starts researching..." — added frontend regex safety net - Research mode instructions updated to not re-ask for URL if one was already provided in conversation history - Set `FIRECRAWL_API_KEY` and `EXA_API_KEY` in Convex env — research was silently failing before - Bumped `100in-pitch` maxQuestions from 10 to 12 ### Storage ID Alias System (Image Attachments) - Root cause: AI was truncating long 32-character Convex storageIds when reproducing them in `image_select` ui_hint JSON output (e.g. dropping `gwcqa0n` from the middle of the 4th image's ID) - Fix: system prompt now passes short aliases (`img1`, `img2`, ...) instead of real storageIds - Frontend resolves aliases back to real IDs via `pulse.questionFramework`, with label-based fuzzy match fallback for already-broken conversations - Also fixed broken attachment images in PulseSettingsForm — the `isStorageId` heuristic required a `:` that Convex IDs don't contain - Fixed `getFileUrl` crash on invalid IDs (restored `v.id("_storage")` for optimized performance after root cause fix) ### Dynamic Pricing Spec (Documentation Only) - Added Dynamic Pricing feature spec — token-based credit consumption model with conversation-length tiers - Recommended approach: Option B (tiered based on `maxQuestions`: 3Q=1cr, 5Q=2cr, 8Q=3cr, 12Q=5cr, 20Q=8cr) - Margin analysis, credit pack impact, three implementation phases ### Workspace Agent OS Improvements - Added `.claude/launch.json` for preview servers - Pre-commit hooks in `settings.json` to catch secrets before git commit - New `/rollback` command for emergency production reverts - Activated `/learn` system (`data/learnings.jsonl`) - Expanded `/user-support` command to 15 structured steps across 5 phases - Created `docs/troubleshooting.md` runbook for Convex/Vercel/auth/Stripe/AI failures ### Miscellaneous Fixes - Removed hardcoded "WAT" reference from Insight Exchange welcome text — now generic - Fixed build error: added `mode` to chat route pulseConfig type - Enabled token cost tracking end-to-end: frontend now sends `workspaceId` and `pulseId` to chat API (was silently missing) - Set `jonas@sparkcollective.be` as admin role --- ## 2026-04-12 ### Pulse Attachments + Image Select Component Creator-uploaded attachments on Pulses. The AI can reference and display images during conversations. - Schema: `attachments` array on pulses table (storageId, name, filename, mimeType, type) - Mutations: `addAttachment`, `removeAttachment` (+ internal variants for API) - API: `attachments` in PATCH whitelist and GET response - New adaptive input: `image_select` — grid of clickable image cards with checkmark overlay, single/multi select - Prompt templates bumped to V2 with `image_select` documentation - Chat route injects pulse attachments into system prompt - Studio: attachment upload section in PulseSettingsForm with thumbnail grid and delete - See Pulse Attachments ### Email Distribution List + Completion Tracking Send Pulse invitations to named recipients and track who completed. - Schema: `pulseRecipients` table (pulseId, name, email, linkToken, status, conversationId, sentAt, completedAt) - Mutations: `addRecipients`, `removeRecipient`, `sendInvitations`, `sendReminders` - Actions: `sendInvitationEmails`, `sendReminderEmails` via Resend - Pulse schema: `reminderEnabled`, `reminderDelayHours`, `maxReminders` fields - Conversation page: `recipientToken` support for tracking named respondents - See Email Distribution List, Reminders & Nudges ### CSV/JSON Export API - `GET /api/v1/pulses/:id/export?format=csv` — download conversations as CSV - `GET /api/v1/pulses/:id/export?format=json` — download as JSON - `convex/exports.ts` — generateCsv and generateJson internal actions ### Website: 5 New Pages - `/use-cases/accelerators` — "Screen 200 applicants without reading 200 forms" - `/use-cases/agencies` — "Briefs that actually brief" - `/use-cases/hr` — "What if exit interviews captured what people really think?" - `/compare` — Unformal vs Typeform comparison with pricing table - `/blog/why-forms-give-garbage-data` — SEO blog post about form pain points ### Navigation Redesign (React Bits Pro) - New `MarketingLayout.tsx` shared component (header, CTA, footer) used across all marketing pages - Glass-effect rounded navbar with expanding card dropdown for use cases (AnimatePresence from motion/react) - Mobile hamburger menu with full use case cards - Landing page and pricing page refactored to use shared MarketingHeader/MarketingFooter - React Bits Pro setup: `components.json`, license, `cn` utility, Navigation-2 block installed ### FAQ Redesign (Pricing Page) - Replaced bordered boxes with clean divider lines - Plus/cross toggle icon with filled circle on active state - Smooth AnimatePresence height animation - Consistent `max-w-3xl` width matching rest of page ### Ranking Drag-and-Drop Fix - Fixed page-level file upload drop zone intercepting Ranking component's internal drag events - Added `e.dataTransfer.setData()`, `e.preventDefault()` on drop, and `e.stopPropagation()` on all drag events - Added `dataTransfer.types.includes("Files")` check to page-level handlers ### WAT Beta Feedback Pulse Improvements - Updated WALDO persona: three pivots origin story, celebrates WAT before critiquing - Reduced maxQuestions 12 → 8 - Added meme picker opening question with 4 AI-generated meme images (via XAI Grok Imagine) - Updated context: celebration-first tone, meta-awareness of being an Unformal demo ### Form Pain Index Campaign Pulse - Created market research Pulse at `/p/understand-the-deepest-frustrations-peop-9c3muf` - Casual tone, 8 questions, coverage-based completion, insights shown to respondent - 3 LinkedIn post drafts in campaign plan --- ## 2026-04-11 ### Question Framework Field + Smart Completion Algorithm **Smart Completion:** Replaced hard `maxQuestions` limit with coverage-based completion. Three modes: balanced (default, 80% coverage target), coverage/thorough (90%, extends freely), speed/quick (70%, respects question target). `buildSmartCompletionPrompt()` in chat route, `completionPriority` field on Pulse schema, UI toggle in Studio. See Smart Completion Algorithm. ### Question Framework Field Clean architectural separation: `persona` = personality only, `questionFramework` = structured questions with `ui_hint` definitions. - Schema: `questionFramework` array on pulses table - Backend: `generateConfig` and fallback prompt builder use it cleanly - Studio UI: JSON editor in settings and create flow with validation - Chat route: `persona` now properly forwarded --- ## 2026-04-04 ### Auto-Improving Pulses (V1) Self-optimizing conversation flows — analyze past conversations and propose config improvements. See Auto-Improving Pulses for full spec. --- ## 2026-04-03 ### Response Limit per Pulse + Closed/Archived Pulse Page - `maxResponses` field on pulses (Unlimited / 10 / 25 / 50 / 100) - `ClosedPulseScreen` for archived/paused, `ResponseLimitScreen` for limit-reached - Studio inbox shows "X / Y responses" - API: `maxResponses` in POST/PATCH/GET --- ## 2026-03-31 ### ui_hint JSON Flash Fix `parseUIHint` now detects ui_hint-shaped JSON in both code block types. Partial blocks stripped during streaming. ### Resonance Compute Race Condition Fix `lastComputedAt` + `_shouldCompute` + `_markComputing` — transactional lock prevents duplicate API calls. ### Adaptive Input AI Reliability Strengthened system prompt: MUST use structured inputs for finite options. Dutch language quality instructions added. ### Docs — Shipped `/docs` index, `/docs/concepts` guide, `/docs/best-practices` playbooks. ### Terms + Privacy Date Update Updated "Last updated" dates. --- ## 2026-03-30 ### Pulse Settings Tab — Now Inline Settings form embedded directly in the "Settings" tab on Pulse detail page, no longer a separate page. ### Workspace Not Auto-Created — Fallback Fix `getOrCreate` mutation in Studio layout now reliably creates a workspace if the `afterUserCreatedOrUpdated` callback fails. Not a root cause fix (Convex Auth callback is unreliable), but eliminates user-facing impact. ### Model Fallback + Budget Monitoring Claude Sonnet → GPT-4o → Gemini Flash failover. Token usage tracking. Usage dashboard. `X-Unformal-Model` header. ### Session Recovery localStorage persistence. "Welcome back" banner with Continue/Start Over. Resume via URL params. ### DNS Email Deliverability SPF + DMARC records. Login spam warning + resend button. ### Landing Page Updates "Try it yourself" demo section. Trust/transparency section. Pricing tiers. Footer links. ### Multi-Workspace Support — Phase 1 `workspaceMembers` table, roles, workspace switcher, scoped queries, `getOrCreate` guard. ### Extract Mode New `mode` field (`interview` | `extract`). Casual tone. Dump-first strategy with field coverage tracking. ### Credit System + Stripe Stripe Checkout, webhook handler, credit packs (€9/100 → €249/10K), Studio settings integration. ### Agent Neutrality Rules Universal rules: never praise, stay neutral, repeat proper nouns, position as preparation not replacement. ### Welcome Screen Customization `welcomeTitle` + `welcomeDescription` fields on Pulses. --- ## 2026-03-29 ### REST API Full API: create/list/get/update/delete Pulses, list conversations, get conversation, usage stats, agent signup. ### Agent-Friendly Distribution `llms.txt`, `UNFORMAL.md` skill file, `ai-plugin.json`, SSE stream, integration docs page. ### Templates 4 pre-built: Client Onboarding, User Research, Lead Qualification, Brain Dump Intake. ### File Uploads + Link Sharing Image upload, drag & drop, Convex file storage, URL detection, link previews, `FileUpload` + `LinkInput` adaptive inputs. ### Security Hardening (7 Critical + 3 Important) Session tokens, rate limiting, webhook secrets, email verification protection, signup rate limiting, SSRF protection, file upload auth. See `SECURITY_FIXES.md`. ### Dark Mode Full coverage: Studio, conversation page, login, privacy/terms. ### Legal Pages GDPR-compliant privacy policy + terms of service (Belgian law, Gent). ### Email Templates Coinbase-inspired design for verification + completion notification emails. --- ## 2026-03-28 ### Echo + Resonance Primary + fallback Echo extraction. Resonance: themes, consensus, divergence, sentiment, recommended actions. --- ## User Feedback Log ### Sil (Shift & Season, 2026-03-30) 1. Login email in spam → Fixed (SPF + DMARC) 2. No demo/preview without building → Fixed (demo Pulse on landing page) 3. Free tier trust / GDPR concerns → Fixed (transparency section, business model explanation) 4. Conversation crash before completion → Session recovery shipped 5. No session recovery → Fixed 6. Privacy concern about voice input → Needs clearer explanation 7. "What happens with my answers?" → Needs post-completion explanation 8. Auto-generate Pulse from website URL → Future feature idea --- *Related: Roadmap, Product Spec* --- # Privacy Policy > How Unformal collects, uses, stores and deletes your data. Operated by Spark Collective BV, Belgium. **URL:** https://unformal.ai/privacy **Updated:** 2026-03-31 **Topics:** privacy policy, GDPR, Spark Collective BV, data retention, Convex, data processing ## Summary Unformal's privacy policy, last updated 31 March 2026. Unformal is operated by Spark Collective BV, a Belgian company (VAT BE0805193139) based in Gent. It collects email addresses, conversation transcripts, Echo structured data, usage metrics and attachments. Data is stored in Convex's EU-West-1 region in Ireland and deleted within 30 days of workspace deletion. Conversation text is processed by Anthropic, OpenAI and Google to generate responses. Unformal does not sell data to third parties. EU users have GDPR rights of access, rectification, erasure, portability and objection via hello@unformal.ai. --- Unformal is operated by Spark Collective BV, a company registered in Belgium (VAT: BE0805193139). We are committed to protecting your privacy and handling your data responsibly. ## Contact Information - **Company** — Spark Collective BV - **VAT** — BE0805193139 - **Location** — Gent, Belgium - **Email** — hello@unformal.ai ## What Data We Collect When you use Unformal, we collect: - **Email address** — for account creation and notifications - **Conversation transcripts** — the full text of conversations between respondents and our AI - **Echo data** — structured insights extracted from conversations (summaries, key quotes, sentiment scores) - **Usage metrics** — conversation count, credit balance, API usage - **Attachments** — images, files, and links shared during conversations ## How We Use Your Data We use your data to: - Provide the Unformal service (conduct AI-powered conversations, extract insights) - Generate structured outputs (Echo and Resonance) for Pulse creators - Send notifications when conversations are completed - Process payments and manage credit balances - Improve our service and AI models We do not sell your data to third parties. Conversation data is visible only to the Pulse creator who owns it. ## Third-Party Services Unformal relies on the following third-party services to operate: - **Anthropic (Claude AI)** — processes conversation text to generate responses and extract insights - **OpenAI** — Whisper (transcription), GPT-4o (alternative AI model) - **Google (Gemini)** — alternative AI model for conversations - **Resend** — sends email notifications - **Stripe** — processes payments for credit purchases - **Convex** — cloud database and backend infrastructure (EU-West-1 region) These services process data on our behalf and are bound by their own privacy policies. We choose providers that comply with GDPR and other data protection regulations. ## Data Storage and Retention - **Location** — All data is stored in Convex's EU-West-1 region (Ireland) - **Retention** — Conversations and Echo data are stored until the workspace is deleted - **Deletion** — When you delete your workspace, all associated conversations, transcripts, and Echo data are permanently removed within 30 days ## Cookies Unformal uses minimal cookies: - **Authentication session cookie** — keeps you logged in - **No tracking cookies** — we do not use analytics cookies or third-party tracking ## Your Rights (GDPR) If you are located in the European Union, you have the following rights: - **Access** — request a copy of your data - **Rectification** — correct inaccurate data - **Erasure** — delete your account and all associated data - **Portability** — export your data in a machine-readable format - **Objection** — object to certain processing of your data To exercise your rights, contact us at hello@unformal.ai. We will respond within 30 days. ## Data Processing by AI Models When a respondent has a conversation, their text is sent to AI providers (Anthropic, OpenAI, or Google) to generate responses and extract insights. These providers process the data according to their own privacy policies: - **Anthropic Privacy Policy** — https://www.anthropic.com/legal/privacy - **OpenAI Privacy Policy** — https://openai.com/privacy - **Google Privacy Policy** — https://policies.google.com/privacy Important: AI-generated responses may contain errors. Unformal is not responsible for the accuracy or completeness of AI outputs. ## Who Sees Your Data - **Pulse creators** — can see Echo data and full transcripts for conversations in their Pulses - **Respondents** — see only their own conversation (unless insights are enabled) - **Unformal team** — may access data for support, debugging, or abuse prevention - **AI providers** — process conversation text to generate responses ## Security We take reasonable measures to protect your data, including: - Encrypted data transmission (HTTPS) - Secure cloud infrastructure (Convex) - Access controls and authentication - Regular security reviews However, no system is 100% secure. If you discover a security vulnerability, please report it to hello@unformal.ai. ## Changes to This Policy We may update this Privacy Policy from time to time. If we make significant changes, we will notify you via email or a prominent notice in the app. Continued use of Unformal after changes constitutes acceptance of the updated policy. ## Questions? If you have questions about this Privacy Policy or how we handle your data, contact us at hello@unformal.ai. --- # Terms of Service > The terms governing use of Unformal, including accounts, acceptable use, credits, API usage and liability. **URL:** https://unformal.ai/terms **Updated:** 2026-03-31 **Topics:** terms of service, acceptable use, credits, API terms, liability, governing law ## Summary Unformal's terms of service, last updated 31 March 2026, covering service description, account creation, acceptable use, the credit system and payments, API usage, intellectual property, an AI disclaimer, limitation of liability, data and privacy, termination, changes to the terms, governing law and contact details. Unformal is operated by Spark Collective BV under Belgian law. --- These Terms of Service ("Terms") govern your use of Unformal, a service provided by Spark Collective BV (VAT: BE0805193139), a company registered in Gent, Belgium. By using Unformal, you agree to these Terms. If you do not agree, do not use the service. ## 1. Service Description Unformal provides AI-powered conversational input flows. You create a "Pulse" (a conversational interview), share a link, and receive structured insights from respondents. Key features include: - Adaptive AI conversations with dynamic input components - Structured data extraction (Echo) from each conversation - Aggregate intelligence across responses (Resonance) - Voice dictation and multilingual transcription - API access for programmatic integration - Webhook notifications ## 2. Account Creation - You must provide a valid email address to create an account - One account per email address - You are responsible for keeping your account secure - You must be at least 16 years old to use Unformal - You may not share your API keys with others or use another user's keys ## 3. Acceptable Use You agree NOT to: - Use Unformal for illegal purposes or to violate any laws - Upload or share illegal content, hate speech, or harmful material - Abuse the service (e.g., automated scraping, spamming, denial-of-service attacks) - Impersonate others or misrepresent your identity - Reverse-engineer or attempt to extract proprietary AI models - Use Unformal to collect personal data without consent We reserve the right to suspend or terminate accounts that violate these terms. ## 4. Credit System and Payments - **Pay-per-conversation** — Each conversation consumes 1 credit (2 credits if web research is enabled) - **Free tier** — New accounts receive 50 free conversation credits - **Credit packs** — Purchase credits via Stripe (100/€9, 500/€29, 2000/€79, 10000/€249) - **Non-refundable** — Credits are non-refundable once purchased - **No expiration** — Credits do not expire - **Auto-pause** — When credits reach 0, active Pulses are automatically paused ## 5. API Usage - API keys are confidential and must not be shared publicly - API usage is subject to rate limits (default: 100 requests per hour) - API requests consume credits from your workspace balance - Abuse of the API may result in account suspension - API documentation is available at unformal.ai/docs/api ## 6. Intellectual Property - **Your content** — You own the conversation data and Echo outputs generated from your Pulses - **Our platform** — Unformal, its code, design, and AI models remain the property of Spark Collective BV - **Anonymized data** — We retain the right to use anonymized, aggregated data to improve the service - **AI-generated content** — AI responses are generated based on your input and do not constitute advice or guaranteed accuracy ## 7. AI Disclaimer Unformal uses AI models from Anthropic (Claude), OpenAI (GPT-4o, Whisper), and Google (Gemini) to power conversations and extract insights. Important - AI-generated responses may contain errors, inaccuracies, or biases - Do not rely on AI outputs for medical, legal, or financial advice - We are not responsible for decisions made based on AI-generated content - You are responsible for reviewing and validating AI outputs before using them ## 8. Limitation of Liability Unformal is provided "as-is" without warranties of any kind, express or implied. Spark Collective BV is not liable for: - Service downtime, data loss, or technical errors - Accuracy or reliability of AI-generated content - Decisions made based on Unformal insights - Misuse of the service by you or third parties - Indirect, incidental, or consequential damages To the maximum extent permitted by law, our total liability to you is limited to the amount you paid for Unformal in the 12 months preceding the claim. ## 9. Data and Privacy Your use of Unformal is subject to our Privacy Policy, which explains how we collect, use, and protect your data. - Conversation data is stored in Convex (EU-West-1 region) - AI providers (Anthropic, OpenAI, Google) process conversation text to generate responses - You control who can access your Pulse conversations and Echo data - Respondents' data is visible to the Pulse creator ## 10. Termination - **By you** — You may delete your account at any time via Studio settings - **By us** — We may suspend or terminate accounts that violate these Terms - **Data deletion** — When an account is terminated, all data is deleted within 30 days - **Credits** — Unused credits are forfeited upon account termination (no refunds) ## 11. Changes to These Terms We may update these Terms from time to time. If we make significant changes, we will notify you via email or a prominent notice in the app. Continued use of Unformal after changes take effect constitutes acceptance of the updated Terms. ## 12. Governing Law These Terms are governed by the laws of Belgium. Any disputes arising from these Terms or your use of Unformal will be resolved in the courts of Gent, Belgium. ## 13. Contact If you have questions about these Terms, contact us at: - **Email** — hello@unformal.ai - **Company** — Spark Collective BV - **VAT** — BE0805193139 - **Location** — Gent, Belgium By using Unformal, you acknowledge that you have read, understood, and agree to these Terms of Service. ---