AI Proposal and CV Maker

There’s a lot of vague marketing around “AI-powered” resume tools. Most of them pipe your information into a large language model, get some text back, and dump it into a template. The result is generic, wordy, and reads like every other AI-generated resume out there.

I want to walk through how we handle AI in KitAura, because I think the details matter.

Two different AI models for two different jobs

Not every task needs the same AI model. Writing polished professional copy requires a capable model that understands tone, context, and brevity. Checking spelling doesn’t.

We use Claude Sonnet for content generation. When you click “AI Fill” on your experience section, Sonnet reads your career profile your actual job titles, companies, dates, and descriptions and rewrites them into achievement-focused bullet points. It costs us about $0.012 per call, which sounds tiny until you multiply it by thousands of users.

For spellchecking, we use Claude Haiku. It’s cheaper ($0.004 per call), faster, and more than capable of catching “developement” and “managment.” We don’t need a powerful model to find typos.

This routing happens server-side. You never see which model is working behind the scenes. You just click a button and get results.

The formatting problem nobody talks about

Here’s something that frustrated me for weeks during development. When an AI generates text for your CV, what format should it be in? Plain text? Markdown? HTML?

None of those work. Your CV template has specific fonts, colors, and sizes for each section. The experience heading might be bold, navy blue, size 13. The job titles might be bold, black, size 11. The bullet points might be regular weight, dark grey, size 11.

If the AI returns formatted text with its own styling, it overrides your template’s design. Every template would look the same after AI Fill, which defeats the purpose of having templates.

Our solution: the AI returns plain structured text just the words, organized by role. Then the app reads the existing template formatting (what color is the heading? what size are the titles? what font are the bullets?) and applies those same styles to the new text.

The template’s design stays intact. Navy templates stay navy. Pink templates stay pink. The AI only changes the content, never the appearance.

Your API key never leaves the server

This is a technical detail most users won’t care about, but it matters for security. The AI API key is stored in Google Cloud Secret Manager. When you click AI Fill, your browser calls our Firebase Cloud Function, which adds the API key server-side and forwards the request to Claude. Your browser never sees the key, never sends it, and can’t access it through browser developer tools.

We also track every AI call server-side token counts, costs, timestamps so usage counters can’t be manipulated from the frontend. The paywall is enforced before the AI call happens, not after.

What AI is bad at (and we don’t pretend otherwise)

AI is bad at knowing what’s true about you. It can polish “I built a mobile app” into “Architected and deployed a cross-platform mobile application,” but it can’t verify whether you actually did that. Everything the AI writes comes from data you provide. If your career profile is empty, the AI has nothing to work with.

It’s also bad at personal summaries. The “Professional Summary” section is the hardest to generate because it requires synthesizing your entire career into 2-3 sentences. Our AI gives you a starting point something like “Senior Flutter Developer in Technology with a track record of delivering results” but you should rewrite it in your own voice. Hiring managers can tell the difference.

Try it yourself: kitaura.winibex.com — the AI Fill works even on the free plan.

Leave a Reply

Your email address will not be published. Required fields are marked *