Cost structure (target: <€30/month total)

ItemCostNotes
Supabase free tier€0Keep-alive cron prevents pause; upgrade (€25/mo) only when real traffic demands it
Vercel hobby€0Marketing site
IG Graph API€0Official Business Discovery — no scraping risk
Firebase Analytics + FCM€0
Apple Developer€99/yrThe one unavoidable cost, needed for TestFlight/App Store — defer until Phase 1
Google Play$25 once
Content production€0Digest tool auto-generates carousels

Advertising plan — pre-launch, Instagram-first (€0 media budget)

Principle: the digest IS the ad. @fommquell proved a weekend-digest page grows organically in this exact niche; Flow’s tool automates what they do by hand.

  1. Cadence: 2 carousels/week — Wed “anteprima weekend” (per-target grouping: TECHNO / APERITIVO / LIVE slides), Fri full digest (per-day VEN/SAB/DOM). Stories daily: countdown, polls (“dove andate stasera?”), repost of venue stories. All formats already documented in Instagram Strategy (pillars, timing, hashtags).
  2. Distribution hacks at €0: tag every venue/organizer that appears in a digest (they reshare — their audience is the acquisition channel); DM the digest to RE-area student group-chats admins (Unimore); collab posts with 2-3 micro venue pages per month.
  3. Conversion: every carousel CTA → chasetheflow.it (waitlist). Target: 1k RE-area followers → 20 beta testers → public beta.
  4. Measure weekly: follower growth RE-area %, saves/share per digest (the algorithm signals), waitlist conversions. Kill/adjust formats that don’t get saves.

Event sourcing from Instagram (the moat)

Pages like @italghisa publish every RE event as a post. Flow collects them via the official IG Graph Business Discovery API (zero ban risk, zero cost — client: tools/instagram_post_creator/pipeline/ig_graph_client.py):

  • Reads public posts of configured handles (IG_NIGHTLIFE_HANDLES=italghisa,...), extracts facts only (date/time/venue/title — captions are copyrighted and never stored).
  • Never-miss guarantee: posts the parser can’t date go to queue/ig_unparsed.json for 1-minute manual review — no event silently lost.
  • Merged with ERT open data behind one normalized shape; dedup keeps the richer source.
  • Digest generator groups by day or by target (skin targets) — non-repetitive covers via real per-weekend stats (free count, dominant vibe, busiest night).
  • Token-free path — LIVE 2026-07-22: Elia could not obtain a Meta token, so ig_thirdparty_client.py fetches public posts via instagram-looter2 on RapidAPI (free tier ~150 req/mo; GET /id?username={handle} then /user-feeds2?id={id}). The provider fetches on its own servers → the user’s IP and account are never used. Verified end-to-end: real posts from arci_tunnel / laviadellespezie / gargottapopolgiost → 4 nightlife events merged with 20 ERT. Config lives in .env (IG_THIRDPARTY_*). instagram120 was tried first but is a media downloader (needs a post link; no “list a user’s posts” endpoint) — unsuitable. Extraction refined: no year-roll-forward on recaps (killed fake future dates), date/weekday lines skipped when choosing titles. Both readers plug behind event_puller, degrade to [] on failure (ERT keeps working). Trade-off: third-party APIs are ToS-grey and can change.
  • Not possible, for the record: reading a private saved-posts collection without the account — that data only exists behind the owner’s login. Sourcing works from public pages (italghisa etc.), not private saves.

Control Room dashboard (built 2026-07-22)

A local web dashboard at http://localhost:5050/dashboard (Flask, tools/instagram_post_creator/app.py + ui/dashboard.html) is the single control plane:

  • Pagine monitorate — add/remove the IG handles to collect from (persisted in config/monitor.json).
  • Budget richieste — live gauge of third-party API calls used vs the monthly free-tier cap; the reader (ig_thirdparty_client) records every call and hard-stops before exceeding the cap (counter auto-resets each month).
  • Genera — one click builds a digest grouped by day or by target (vibe).
  • Coda — preview each generated post (full-screen viewer, swipe all slides), Modifica its texts (edit event title/time/venue/category → regenerate via /api/render), then Approva / Programma (schedule publish time) / Scarta.

Event data comes from the ERT open-data API (real exhibitions/festivals), not fake data. Long-running events (a mostra open through the weekend) now render as “IN CORSO · fino al …” instead of their stale start date — and any residual data glitch (e.g. mojibake in an ERT title) can be hand-fixed in the Modifica editor before publishing.

Security hardening applied same day: secure_filename on the export route (path-traversal), Flask debug gated behind FLASK_DEBUG, XSS-safe DOM construction in the dashboard. Note: tools/ is not yet under git — version it before running from a cloud cron.

Path to first revenue (from Target Study)

  1. Now→3 mo: free everything; grow channel + beta. Revenue: €0 by design.
  2. 3–6 mo: venues seen resharing digests get offered a free “featured” slot → relationship. PR list tool concept validated in conversations (PR economics run on WhatsApp/paper).
  3. 6+ mo (only if 100+ WAU): commission-only guestlist/ticketing (Clubbing/Xceed model: free for users, % on transactions). No subscriptions — the market rejected them.

Roadmap · Target Study · Instagram Strategy