تصور کنید کابوس حسابداری برای فریلنسرهای بینالمللی را: تلاشهای بیپایان برای تبدیل فایلهای CSV نامرتب بانکی به سوابق مالی ساختاریافته. این دقیقاً همان نقطه دردی (Pain Point) بود که دومینیک، توسعهدهنده Full-stack اهل چنگدوی چین، پس از تعدیل نیرو شدن از شغلش، تصمیم گرفت آن را حل کند. او بهجای اینکه بلافاصله به دنبال شغل جدید بگردد، چهار ماه وقت گذاشت تا Tally Assistant را بسازد؛ یک سرویس SaaS آماده برای تولید که توسط تنها یک توسعهدهنده عرضه شده است.
ابزارهای حسابداری مدرن مانند QuickBooks و Xero اغلب برای فریلنسرها شکست میخورند، زیرا برای حسابداران حرفهای ساخته شدهاند که انتظار دادههای پاک و استاندارد دارند. اما دادههای واقعی فریلنسرها آشفته است. دومینیک متوجه شد که هر ماه ساعتها وقت صرف دانلود فایلهای CSV از Stripe, PayPal, Wise و بانکهای مختلف چینی میکند. هر فایل با فرمت متفاوتی میآمد؛ با سرتیترهای ستونهای متفاوت، فرمتهای تاریخ گوناگون و زبانهای مختلف. او زمان خود را صرف بازسازی تاریخها، تبدیل کاماهای اروپایی، مطابقت دادن ارزها و ایجاد دستی فاکتورها میکرد و سپس به شکلی دشوار، مشتریان را برای پرداختهای دیر شده پیگیری مینمود. دومینیک با تکیه بر روند استکهای Lean AI، بر ابزاری تمرکز کرد که هر دادهی بدون ساختاری را که کاربر به آن میدهد میپذیرد و بقیه موارد را خودش تشخیص میدهد.
معماری ترکیبی هوش مصنوعی
دومینیک از اشتباه رایج بسیاری از توسعهدهندگان دوری کرد: او از هوش مصنوعی نخواست که هر خط از یک سند مالی را تجزیه کند، زیرا این کار کند و گران بود. در عوض، او یک رویکرد ترکیبی را با استفاده از مدلهای OpenAI پیاده کرد و با هوش مصنوعی بهجای یک پردازشگر داده، به عنوان یک «تعریفکننده الگو» (Schema Definer) برخورد کرد:
- تجزیه CSV: او تنها ۲۰ سطر اول یک فایل CSV را به صورت متن خام به GPT-4o میفرستد. هوش مصنوعی نوع ستونها را شناسایی میکند، فرمت تاریخ را تشخیص میدهد و ارز را میشناسد. سپس یک نقشه JSON از این انواع بازمیگرداند. در این مرحله، سیستم از کد قطعی (Deterministic) برای تجزیه هزاران سطر باقیمانده استفاده میکند. این سازوکار خاص، سریعتر، ارزانتر و قابلاعتمادتر از پردازش خالص LLM است.
- نویسهخوانی نوری (OCR) رسیدها: او از GPT-4V (Vision) برای خواندن اسکرینشاتهای پرداخت استفاده میکند. پرامپت بهطور صریح خروجی JSON ساختاریافته شامل نام فروشنده، مبلغ، ارز و تاریخ را درخواست میکند. برای مدیریت تصاویری که تراکنشهای متعددی دارند، مدل دستور میگیرد که آرایهای از اشیاء (Array of Objects) بازگرداند.
- تولید فاکتور: این ابزار توصیفات زبان طبیعی را به فاکتورهای ساختاریافته تبدیل میکند. پرامپت، متن آزاد را به اقلام دقیق (Line Items) همراه با محاسبات مالیاتی تبدیل میکند. برای اطمینان از درست بودن محاسبات ریاضی، دومینیک نرخ مالیاتی پیکربندیشده توسط کاربر و ارز را مستقیماً در پرامپت سیستمی گنجانده است.
- چت مالی: یک ساختار RAG (تولید بازیابیافزا) به کاربران اجازه میدهد تا سوالاتی درباره امور مالی خود بپرسند. سیستم ابتدا دادههای مالی کاربر را از Prisma استعلام میکند و سپس نتایج بازیابی شده را به همراه سوال به مدل میفرستد تا خلاصه نهایی را ارائه دهد.
بزرگترین درس دومینیک در مورد هوش مصنوعی این بود که طراحی پرامپت (Prompt Design) بر نسخه مدل اولویت دارد. او زمان بیشتری را صرف تکرار و اصلاح پرامپتهای سیستمی با دستورات خروجی صریح کرد تا بقیه خط لوله AI؛ او خاطرنشان کرد که یک پرامپت با ساختار خوب، هر بار بر یک مدل بزرگتر با دستورات مبهم غلبه میکند.

استک زیرساختی
دومینیک برای حفظ سرعت به عنوان یک مؤسس تکنفره، به مجموعهای از ابزارهای با اهرم بالا تکیه کرد که برای سرعت بخشیدن به توسعه طراحی شدهاند:
- Next.js 16 (App Router): برای تقویت SEO، رندرینگ سمت سرور (SSR) انتخاب شد. او برای تمام ۶۰+ صفحه بازاریابی از تولید استاتیک استفاده کرد که منجر به حذف کامل JS سمت کلاینت در آن صفحات و بهبود Core Web Vitals شد. او اشاره کرد که برای وبلاگ خود بهزودی ISR (تولید استاتیک افزایشی) را پیاده میکند تا از استقرار مجدد کامل برای هر پست جدید جلوگیری کند.
- Prisma + PostgreSQL: برای کوئریهای Type-safe انتخاب شدند. این کار از خطاهای زمان اجرای بیصدا به دلیل ستونهای گمشده جلوگیری کرد؛ اگر طرح (Schema) تغییر میکرد، دستور
prisma migrate devو TypeScript هر نقطه شکست را علامت میزدند. او استقرار در Vercel را با افزودنprisma generateبه اسکریپت postinstall بهینه کرد. - Clerk: مدیریت احراز هویت و همگامسازی کاربران را بر عهبه دارد. این ابزار امکان ورود با گوگل، گیتهاب و ایمیل را با حداقل کد فراهم کرد. دومینیک یک همگامسازی کاربر مبتنی بر Webhook پیاده کرد تا اطمینان حاصل شود که هر زمان کاربری ایجاد، بهروزرسانی یا حذف شد، پایگاه داده Prisma بهروز شود.
- Inngest: مدیریت کارهای پسزمینه (Cron Jobs) را از طریق Step Functions انجام میدهد. این ابزار برای بررسی روزانه فاکتورهای پرداختنشده (زمانبندی شده برای ساعت ۸:۰۰ صبح به وقت نیویورک) و ارسال ایمیلهای یادآوری استفاده میشود. چون Inngest از توابع مرحلهای استفاده میکند، هر مرحله بهصورت مجزا قابل تلاش مجدد (Retry) است و در داشبورد قابل مشاهده است.
- Resend: یک REST API برای ایمیلهای تراکنشی است. این کار نیاز به پیکربندیهای پیچیده SMTP را دور زد. دومینیک هشدار داد که تأیید دامنه (Domain Verification) حیاتی است؛ در غیر این صورت، ایمیلهای یادآوری ممکن است بدون هیچ خطایی شکست بخورند.
استراتژی رشد و توزیع
دومینیک میدانست که رتبهبندی برای نام برند «Tally Assistant» ترافیک ایجاد نمیکند. او دو هفته روی استراتژی «سئو ترکیبی» (Compound SEO) سرمایهگذاری کرد و بیش از ۶۰ صفحه لندینگ استاتیک ساخت که پرسوجوهای جستجوی با قصد بالا (High-intent) را هدف قرار میدادند:
- ۱۱ صفحه ویژگی: هدفگذاری کلمات کلیدی مانند «تولیدکننده فاکتور AI»، «اسکنر رسید» و «وارد کردن CSV».
- ۹ صفحه صنعتی: متناسب با نیچهای خاص، مانند «حسابداری برای فروشندگان Shopify» و «حسابداری برای عکاسان». این رویکرد بهینه سازی برای بخشهای خاص بازار یادآور تلاشهای مشابه در حوزههای دیگر است؛ برای مثال، بررسی تاثیر اتوماسیون در کاهش نرخ شکست فروشگاههای نوپا نشان میدهد که چگونه هدفگذاری دقیق و اتوماسیون میتواند بقای کسبوکارهای کوچک را تضمین کند.
- ۶ صفحه مقایسهای: هدف قرار دادن کاربرانی که به دنبال «جایگزین QuickBooks» یا «جایگزین Wave» هستند.
- ۱۵ اصطلاح واژهنامه: محتوای آموزشی درباره «حسابهای دریافتنی چیست» و «تعریف فاکتور».
- ۱۰ صفحه راهنما/قالب: شامل ۴ راهنمای جامع و ۶ صفحه قالب رایگان.
هر صفحه با استفاده از دادههای ساختاریافته JSON-LD (بهویژه شمای FAQPage، Article و DefinedTerm)، HTML معنایی برای سلسلهمراتب هدینگها و توضیحات متا (Meta Descriptions) که مخصوصاً به عنوان قطعات جستجو (Search Snippets) نوشته شده بودند، بهینه شد.
اشتباهات حیاتی و درسها
علیرغم موفقیت فنی، دومینیک سه شکست حیاتی را برجسته کرد که به عنوان نقاط چرخش (Pivot) برای محصول عمل کردند:
۱. ساخت ویژگیهای درخواستی نشده: او سه هفته وقت صرف ایجاد یک طراح رسید PDF با انتخابگرهای رنگ سفارشی و قرار دادن لوگو با قابلیت Drag-and-drop کرد. وقتی بالاخره با فریلنسرها صحبت کرد، آنها به طراحی اهمیت نمیدادند؛ آنها فقط میخواستند وارد کردن CSV با بانکهایشان درست کار کند. او طراح را حذف کرد و به سمت تجزیه جهانی CSV رفت که به تحسینشدهترین ویژگی او تبدیل شد. او اکنون برای اعتبارسنجی ویژگیها پیش از کدنویسی، در r/freelance در ردیت پست میگذارد.
۲. عرضه بیش از حد بیصدا: پس از چهار ماه ساخت، او در ابتدا خبر عرضه را برای ۱۲ دنبالکننده در توییتر منتشر کرد که هیچ نتیجهای نداشت. او در نهایت به استراتژی توزیع چندکاناله تغییر مسیر داد: زمانبندی عرضه در Product Hunt برای سهشنبه نیمهشب به وقت PST، ارسال پست برای بازخورد در Reddit و پاسخ دادن به افرادی که در X (توییتر) از حسابداری شکایت میکردند.
۳. سختکد کردن فرضها (Hardcoding): او در ابتدا USD را به عنوان ارز گزارشدهی پیشفرض سختکد کرده بود. این موضوع توسط کاربری در برلین علامت زده شد که پرسید چرا همه چیز به دلار است. او متعاقباً ارز پایه را به یک تنظیم قابل پیکربندی توسط کاربر تبدیل کرد.
برای یک توسعهدهنده تکنفره، این پروژه نشان میدهد که مهندسی پرامپت — بهویژه ساختاردهی خروجی برای مصرف قطعی — تأثیرگذارتر از صرفاً استفاده از نسخه مدل بزرگتر است. این امر نقش هوش مصنوعی را از «مجری» به «تعریفکننده الگو» تغییر میدهد.
این رویکرد پیشنهاد میکند که موج بعدی SaaSهای هوش مصنوعی، پوششهای (Wrappers) «AI-first» نخواهند بود، بلکه سیستمهای ترکیبی خواهند بود که از LLMها برای پر کردن شکاف بین دادههای آشفته انسانی و پایگاههای داده سنتی و سخت استفاده میکنند. اگر در حال ساخت یک پروژه تکنفره هستید، تحلیل کنید که آیا هوش مصنوعی شما بیش از حد بار سنگین را به دوش میکشد یا خیر. سعی کنید منطقهای تکراری را به کد قطعی منتقل کنید و از LLM فقط برای نقشهبرداری اولیه استفاده کنید.
گام بعدی شما
- اگر در حال ساخت یک محصول AI هستید، بررسی کنید آیا مدل شما «کار سخت» را انجام میدهد یا فقط «نقشه» را میکشد؛ منطقهای تکراری را به کد قطعی منتقل کنید.
- برای توزیع محصول، بهجای یک صفحه اصلی، لندینگ پیجهای متمرکز بر نیاز کاربر (Feature-specific) بسازید.
- پیش از کدنویسی هر ویژگی جدید، در انجمنهای تخصصی (مانند r/freelance) نیاز واقعی کاربران را اعتبارسنجی کنید.
اما داستان بهینهسازی این سیستمها در لایههای زیرساختی پیچیدهتر است — به تحلیل ما دربارهی معماری vLLM برای کاهش تأخیر مراجعه کنید.




گفتگو